Congratulations!

[Valid RSS] This is a valid RSS feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: http://securelist.com/feed/

  1. <?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
  2. xmlns:content="http://purl.org/rss/1.0/modules/content/"
  3. xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  4. xmlns:dc="http://purl.org/dc/elements/1.1/"
  5. xmlns:atom="http://www.w3.org/2005/Atom"
  6. xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  7. xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  8. >
  9.  
  10. <channel>
  11. <title>Securelist</title>
  12. <atom:link href="https://securelist.com/feed/" rel="self" type="application/rss+xml" />
  13. <link>https://securelist.com</link>
  14. <description></description>
  15. <lastBuildDate>Wed, 15 Oct 2025 13:03:12 +0000</lastBuildDate>
  16. <language>en-US</language>
  17. <sy:updatePeriod>
  18. hourly </sy:updatePeriod>
  19. <sy:updateFrequency>
  20. 1 </sy:updateFrequency>
  21. <generator>https://wordpress.org/?v=6.8.3</generator>
  22.  
  23. <image>
  24. <url>https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2018/11/06125514/cropped-sl_favicon-32x32.png</url>
  25. <title>Securelist</title>
  26. <link>https://securelist.com</link>
  27. <width>32</width>
  28. <height>32</height>
  29. </image>
  30. <item>
  31. <title>Maverick: a new banking Trojan abusing WhatsApp in a mass-scale distribution</title>
  32. <link>https://securelist.com/maverick-banker-distributing-via-whatsapp/117715/</link>
  33. <comments>https://securelist.com/maverick-banker-distributing-via-whatsapp/117715/#respond</comments>
  34. <dc:creator><![CDATA[GReAT]]></dc:creator>
  35. <pubDate>Wed, 15 Oct 2025 13:00:43 +0000</pubDate>
  36. <category><![CDATA[Malware descriptions]]></category>
  37. <category><![CDATA[Malware Technologies]]></category>
  38. <category><![CDATA[Microsoft Internet Explorer]]></category>
  39. <category><![CDATA[Firefox]]></category>
  40. <category><![CDATA[Google Chrome]]></category>
  41. <category><![CDATA[Malware Descriptions]]></category>
  42. <category><![CDATA[Malware]]></category>
  43. <category><![CDATA[Trojan Banker]]></category>
  44. <category><![CDATA[Trojan]]></category>
  45. <category><![CDATA[Brazil]]></category>
  46. <category><![CDATA[Microsoft Edge]]></category>
  47. <category><![CDATA[Coyote]]></category>
  48. <category><![CDATA[Maverick]]></category>
  49. <category><![CDATA[Financial threats]]></category>
  50. <category><![CDATA[Windows malware]]></category>
  51. <guid isPermaLink="false">https://kasperskycontenthub.com/securelist/?p=117715</guid>
  52.  
  53. <description><![CDATA[A malware campaign was recently detected in Brazil, distributing a malicious LNK file using WhatsApp. It delivered a new Maverick banker, which features code overlaps with Coyote malware.]]></description>
  54. <content:encoded><![CDATA[<p><img width="990" height="400" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15073641/SL-Maverick-Brazilian-banker-featured-990x400.jpg" class="attachment-securelist-huge-promo size-securelist-huge-promo wp-post-image" alt="" decoding="async" loading="lazy" /></p><p>A malware campaign was recently detected in Brazil, distributing a malicious LNK file using WhatsApp. It targets mainly Brazilians and uses Portuguese-named URLs. To evade detection, the command-and-control (C2) server verifies each download to ensure it originates from the malware itself.<br />
  55. The whole infection chain is complex and fully fileless, and by the end, it will deliver a new banking Trojan named Maverick, which contains many code overlaps with <a href="https://securelist.com/coyote-multi-stage-banking-trojan/111846/" target="_blank" rel="noopener">Coyote</a>. In this blog post, we detail the entire infection chain, encryption algorithm, and its targets, as well as discuss the similarities with known threats.</p>
  56. <h2 id="key-findings">Key findings:</h2>
  57. <ul>
  58. <li>A massive campaign disseminated through WhatsApp distributed the new Brazilian banking Trojan named &#8220;Maverick&#8221; through ZIP files containing a malicious LNK file, which is not blocked on the messaging platform.</li>
  59. <li>Once installed, the Trojan uses the open-source project WPPConnect to automate the sending of messages in hijacked accounts via WhatsApp Web, taking advantage of the access to send the malicious message to contacts.</li>
  60. <li>The new Trojan features code similarities with another Brazilian banking Trojan called <a href="https://securelist.com/coyote-multi-stage-banking-trojan/111846/" target="_blank" rel="noopener">Coyote</a>; however, we consider Maverick to be a new threat.</li>
  61. <li>The Maverick Trojan checks the time zone, language, region, and date and time format on infected machines to ensure the victim is in Brazil; otherwise, the malware will not be installed.</li>
  62. <li>The banking Trojan can fully control the infected computer, taking screenshots, monitoring open browsers and websites, installing a keylogger, controlling the mouse, blocking the screen when accessing a banking website, terminating processes, and opening phishing pages in an overlay. It aims to capture banking credentials.</li>
  63. <li>Once active, the new Trojan will monitor the victims&#8217; access to 26 Brazilian bank websites, 6 cryptocurrency exchange websites, and 1 payment platform.</li>
  64. <li>All infections are modular and performed in memory, with minimal disk activity, using PowerShell, .NET, and shellcode encrypted using Donut.</li>
  65. <li>The new Trojan uses AI in the code-writing process, especially in certificate decryption and general code development.</li>
  66. <li>Our solutions have blocked 62 thousand infection attempts using the malicious LNK file in the first 10 days of October, only in Brazil.</li>
  67. </ul>
  68. <h2 id="initial-infection-vector">Initial infection vector</h2>
  69. <p>The infection chain works according to the diagram below:</p>
  70. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061851/maverick-banker-01.png" class="magnificImage"><img fetchpriority="high" decoding="async" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061851/maverick-banker-01.png" alt="" width="2093" height="731" class="aligncenter size-full wp-image-117756" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061851/maverick-banker-01.png 2093w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061851/maverick-banker-01-300x105.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061851/maverick-banker-01-1024x358.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061851/maverick-banker-01-768x268.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061851/maverick-banker-01-1536x536.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061851/maverick-banker-01-2048x715.png 2048w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061851/maverick-banker-01-1002x350.png 1002w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061851/maverick-banker-01-740x258.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061851/maverick-banker-01-802x280.png 802w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061851/maverick-banker-01-800x279.png 800w" sizes="(max-width: 2093px) 100vw, 2093px" /></a></p>
  71. <p>The infection begins when the victim receives a malicious .LNK file inside a ZIP archive via a WhatsApp message. The filename can be generic, or it can pretend to be from a bank:</p>
  72. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061954/maverick-banker-02-upd.jpg" class="magnificImage"><img decoding="async" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061954/maverick-banker-02-upd.jpg" alt="" width="1009" height="546" class="aligncenter size-full wp-image-117757" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061954/maverick-banker-02-upd.jpg 1009w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061954/maverick-banker-02-upd-300x162.jpg 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061954/maverick-banker-02-upd-768x416.jpg 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061954/maverick-banker-02-upd-647x350.jpg 647w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061954/maverick-banker-02-upd-740x400.jpg 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061954/maverick-banker-02-upd-517x280.jpg 517w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061954/maverick-banker-02-upd-800x433.jpg 800w" sizes="(max-width: 1009px) 100vw, 1009px" /></a></p>
  73. <p>The message said, <em>&#8220;Visualization allowed only in computers. In case you&#8217;re using the Chrome browser, choose &#8220;keep file&#8221; because it&#8217;s a zipped file&#8221;.</em></p>
  74. <p>The LNK is encoded to execute cmd.exe with the following arguments:</p>
  75. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212230/maverick-banker-distributing5.png" class="magnificImage"><img decoding="async" class="aligncenter size-full wp-image-117718" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212230/maverick-banker-distributing5.png" alt="" width="2048" height="111" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212230/maverick-banker-distributing5.png 2048w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212230/maverick-banker-distributing5-300x16.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212230/maverick-banker-distributing5-1024x56.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212230/maverick-banker-distributing5-768x42.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212230/maverick-banker-distributing5-1536x83.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212230/maverick-banker-distributing5-740x40.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212230/maverick-banker-distributing5-1600x87.png 1600w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212230/maverick-banker-distributing5-800x43.png 800w" sizes="(max-width: 2048px) 100vw, 2048px" /></a></p>
  76. <p>The decoded commands point to the execution of a PowerShell script:</p>
  77. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212353/maverick-banker-distributing1-1.png" class="magnificImage"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-117720" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212353/maverick-banker-distributing1-1.png" alt="" width="1633" height="39" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212353/maverick-banker-distributing1-1.png 1633w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212353/maverick-banker-distributing1-1-300x7.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212353/maverick-banker-distributing1-1-1024x24.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212353/maverick-banker-distributing1-1-768x18.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212353/maverick-banker-distributing1-1-1536x37.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212353/maverick-banker-distributing1-1-740x18.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212353/maverick-banker-distributing1-1-1600x38.png 1600w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212353/maverick-banker-distributing1-1-800x19.png 800w" sizes="auto, (max-width: 1633px) 100vw, 1633px" /></a></p>
  78. <p>The command will contact the C2 to download another PowerShell script. It is important to note that the C2 also validates the &#8220;User-Agent&#8221; of the HTTP request to ensure that it is coming from the PowerShell command. This is why, without the correct &#8220;User-Agent&#8221;, the C2 returns an HTTP 401 code.</p>
  79. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062044/maverick-banker-distributing7-upd.png" class="magnificImage"><img loading="lazy" decoding="async" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062044/maverick-banker-distributing7-upd.png" alt="" width="1615" height="883" class="aligncenter size-full wp-image-117758" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062044/maverick-banker-distributing7-upd.png 1615w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062044/maverick-banker-distributing7-upd-300x164.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062044/maverick-banker-distributing7-upd-1024x560.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062044/maverick-banker-distributing7-upd-768x420.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062044/maverick-banker-distributing7-upd-1536x840.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062044/maverick-banker-distributing7-upd-640x350.png 640w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062044/maverick-banker-distributing7-upd-740x405.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062044/maverick-banker-distributing7-upd-512x280.png 512w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062044/maverick-banker-distributing7-upd-800x437.png 800w" sizes="auto, (max-width: 1615px) 100vw, 1615px" /></a></p>
  80. <p>The entry script is used to decode an embedded .NET file, and all of this occurs only in memory. The .NET file is decoded by dividing each byte by a specific value; in the script above, the value is &#8220;174&#8221;. The PE file is decoded and is then loaded as a .NET assembly within the PowerShell process, making the entire infection fileless, that is, without files on disk.<br />
  81. <a name="loader"></a></p>
  82. <h3 id="initial-net-loader">Initial .NET loader</h3>
  83. <p>The initial .NET loader is heavily obfuscated using Control Flow Flattening and indirect function calls, storing them in a large vector of functions and calling them from there. In addition to obfuscation, it also uses random method and variable names to hinder analysis. Nevertheless, after our analysis, we were able to reconstruct (to a certain extent) its main flow, which consists of downloading and decrypting two payloads.</p>
  84. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212544/maverick-banker-distributing16.png" class="magnificImage"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-117722" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212544/maverick-banker-distributing16.png" alt="" width="2048" height="840" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212544/maverick-banker-distributing16.png 2048w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212544/maverick-banker-distributing16-300x123.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212544/maverick-banker-distributing16-1024x420.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212544/maverick-banker-distributing16-768x315.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212544/maverick-banker-distributing16-1536x630.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212544/maverick-banker-distributing16-853x350.png 853w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212544/maverick-banker-distributing16-740x304.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212544/maverick-banker-distributing16-683x280.png 683w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212544/maverick-banker-distributing16-800x328.png 800w" sizes="auto, (max-width: 2048px) 100vw, 2048px" /></a></p>
  85. <p>The obfuscation does not hide the method&#8217;s variable names, which means it is possible to reconstruct the function easily if the same function is reused elsewhere. Most of the functions used in this initial stage are the same ones used in the final stage of the banking Trojan, which is not obfuscated. The sole purpose of this stage is to download two encrypted shellcodes from the C2. To request them, an API exposed by the C2 on the &#8220;/api/v1/&#8221; routes will be used. The requested URL is as follows:</p>
  86. <ul>
  87. <li>hxxps://sorvetenopote.com/api/v1/3d045ada0df942c983635e</li>
  88. </ul>
  89. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212635/maverick-banker-distributing4.png" class="magnificImage"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-117723" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212635/maverick-banker-distributing4.png" alt="" width="1788" height="315" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212635/maverick-banker-distributing4.png 1788w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212635/maverick-banker-distributing4-300x53.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212635/maverick-banker-distributing4-1024x180.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212635/maverick-banker-distributing4-768x135.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212635/maverick-banker-distributing4-1536x271.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212635/maverick-banker-distributing4-740x130.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212635/maverick-banker-distributing4-1589x280.png 1589w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212635/maverick-banker-distributing4-800x141.png 800w" sizes="auto, (max-width: 1788px) 100vw, 1788px" /></a></p>
  90. <p>To communicate with its API, it sends the API key in the &#8220;X-Request-Headers&#8221; field of the HTTP request header. The API key used is calculated locally using the following algorithm:</p>
  91. <ul>
  92. <li>&#8220;Base64(HMAC256(Key))&#8221;</li>
  93. </ul>
  94. <p>The HMAC is used to sign messages with a specific key; in this case, the threat actor uses it to generate the &#8220;API Key&#8221; using the HMAC key &#8220;MaverickZapBot2025SecretKey12345&#8221;. The signed data sent to the C2 is &#8220;3d045ada0df942c983635e|1759847631|MaverickBot&#8221;, where each segment is separated by &#8220;|&#8221;. The first segment refers to the specific resource requested (the first encrypted shellcode), the second is the infection&#8217;s timestamp, and the last, &#8220;MaverickBot&#8221;, indicates that this C2 protocol may be used in future campaigns with different variants of this threat. This ensures that tools like &#8220;wget&#8221; or HTTP downloaders cannot download this stage, only the malware.</p>
  95. <p>Upon response, the encrypted shellcode is a loader using Donut. At this point, the initial loader will start and follow two different execution paths: another loader for its WhatsApp infector and the final payload, which we call &#8220;MaverickBanker&#8221;. Each Donut shellcode embeds a .NET executable. The shellcode is encrypted using a XOR implementation, where the key is stored in the last bytes of the binary returned by the C2. The algorithm to decrypt the shellcode is as follows:</p>
  96. <ul>
  97. <li>Extract the last 4 bytes (int32) from the binary file; this indicates the size of the encryption key.</li>
  98. <li>Walk backwards until you reach the beginning of the encryption key (file size &#8211; 4 &#8211; key_size).</li>
  99. <li>Get the XOR key.</li>
  100. <li>Apply the XOR to the entire file using the obtained key.</li>
  101. </ul>
  102. <h2 id="whatsapp-infector-downloader">WhatsApp infector downloader</h2>
  103. <p>After the second Donut shellcode is decrypted and started, it will load another downloader using the same obfuscation method as the previous one. It behaves similarly, but this time it will download a PE file instead of a Donut shellcode. This PE file is another .NET assembly that will be loaded into the process as a module.</p>
  104. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212800/maverick-banker-distributing9.png" class="magnificImage"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-117724" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212800/maverick-banker-distributing9.png" alt="" width="2045" height="818" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212800/maverick-banker-distributing9.png 2045w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212800/maverick-banker-distributing9-300x120.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212800/maverick-banker-distributing9-1024x410.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212800/maverick-banker-distributing9-768x307.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212800/maverick-banker-distributing9-1536x614.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212800/maverick-banker-distributing9-875x350.png 875w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212800/maverick-banker-distributing9-740x296.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212800/maverick-banker-distributing9-700x280.png 700w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212800/maverick-banker-distributing9-800x320.png 800w" sizes="auto, (max-width: 2045px) 100vw, 2045px" /></a></p>
  105. <p>One of the namespaces used by this .NET executable is named &#8220;Maverick.StageOne,&#8221; which is considered by the attacker to be the first one to be loaded. This download stage is used exclusively to download the WhatsApp infector in the same way as the previous stage. The main difference is that this time, it is not an encrypted Donut shellcode, but another .NET executable—the WhatsApp infector—which will be used to hijack the victim&#8217;s account and use it to spam their contacts in order to spread itself.</p>
  106. <p>This module, which is also obfuscated, is the WhatsApp infector and represents the final payload in the infection chain. It includes a script from <a href="https://github.com/wppconnect-team/wppconnect" target="_blank" rel="noopener">WPPConnect</a>, an open-source WhatsApp automation project, as well as the Selenium browser executable, used for web automation.</p>
  107. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212842/maverick-banker-distributing8.png" class="magnificImage"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-117725" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212842/maverick-banker-distributing8.png" alt="" width="1841" height="745" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212842/maverick-banker-distributing8.png 1841w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212842/maverick-banker-distributing8-300x121.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212842/maverick-banker-distributing8-1024x414.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212842/maverick-banker-distributing8-768x311.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212842/maverick-banker-distributing8-1536x622.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212842/maverick-banker-distributing8-990x400.png 990w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212842/maverick-banker-distributing8-865x350.png 865w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212842/maverick-banker-distributing8-740x299.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212842/maverick-banker-distributing8-692x280.png 692w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212842/maverick-banker-distributing8-800x324.png 800w" sizes="auto, (max-width: 1841px) 100vw, 1841px" /></a></p>
  108. <p>The executable&#8217;s namespace name is &#8220;ZAP&#8221;, a very common word in Brazil to refer to WhatsApp. These files use almost the same obfuscation techniques as the previous examples, but the method&#8217;s variable names remain in the source code. The main behavior of this stage is to locate the WhatsApp window in the browser and use WPPConnect to instrument it, causing the infected victim to send messages to their contacts and thus spread again. The file sent depends on the &#8220;MaverickBot&#8221; executable, which will be discussed in the next section.</p>
  109. <h2 id="maverick-the-banking-trojan">Maverick, the banking Trojan</h2>
  110. <p>The Maverick Banker comes from a different execution branch than the WhatsApp infector; it is the result of the second Donut shellcode. There are no additional download steps to execute it. This is the main payload of this campaign and is embedded within another encrypted executable named &#8220;Maverick Agent,&#8221; which performs extended activities on the machine, such as contacting the C2 and keylogging. It is described in the next section.</p>
  111. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212938/maverick-banker-distributing10.png" class="magnificImage"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-117726" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212938/maverick-banker-distributing10.png" alt="" width="1443" height="1124" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212938/maverick-banker-distributing10.png 1443w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212938/maverick-banker-distributing10-300x234.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212938/maverick-banker-distributing10-1024x798.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212938/maverick-banker-distributing10-768x598.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212938/maverick-banker-distributing10-449x350.png 449w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212938/maverick-banker-distributing10-740x576.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212938/maverick-banker-distributing10-359x280.png 359w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212938/maverick-banker-distributing10-800x623.png 800w" sizes="auto, (max-width: 1443px) 100vw, 1443px" /></a></p>
  112. <p>Upon the initial loading of Maverick Banker, it will attempt to register persistence using the startup folder. At this point, if persistence does not exist, by checking for the existence of a .bat file in the &#8220;Startup&#8221; directory, it will not only check for the file&#8217;s existence but also perform a pattern match to see if the string &#8220;for %%&#8221; is present, which is part of the initial loading process. If such a file does not exist, it will generate a new &#8220;GUID&#8221; and remove the first 6 characters. The persistence batch script will then be stored as:</p>
  113. <ul>
  114. <li>&#8220;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\&#8221; + &#8220;HealthApp-&#8221; + GUID + &#8220;.bat&#8221;.</li>
  115. </ul>
  116. <p>Next, it will generate the bat command using the hardcoded URL, which in this case is:</p>
  117. <ul>
  118. <li>&#8220;hxxps://sorvetenopote.com&#8221; + &#8220;/api/itbi/startup/&#8221; + NEW_GUID.</li>
  119. </ul>
  120. <p>In the command generation function, it is possible to see the creation of an entirely new obfuscated PowerShell script.</p>
  121. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062224/maverick-banker-distributing6-upd.png" class="magnificImage"><img loading="lazy" decoding="async" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062224/maverick-banker-distributing6-upd.png" alt="" width="1719" height="631" class="aligncenter size-full wp-image-117759" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062224/maverick-banker-distributing6-upd.png 1719w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062224/maverick-banker-distributing6-upd-300x110.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062224/maverick-banker-distributing6-upd-1024x376.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062224/maverick-banker-distributing6-upd-768x282.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062224/maverick-banker-distributing6-upd-1536x564.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062224/maverick-banker-distributing6-upd-953x350.png 953w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062224/maverick-banker-distributing6-upd-740x272.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062224/maverick-banker-distributing6-upd-763x280.png 763w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062224/maverick-banker-distributing6-upd-800x294.png 800w" sizes="auto, (max-width: 1719px) 100vw, 1719px" /></a></p>
  122. <p>First, it will create a variable named &#8220;$URL&#8221; and assign it the content passed as a parameter, create a &#8220;Net.WebClient&#8221; object, and call the &#8220;DownloadString.Invoke($URL)&#8221; function. Immediately after creating these small commands, it will encode them in base64. In general, the script will create a full obfuscation using functions to automatically and randomly generate blocks in PowerShell. The persistence script reassembles the initial LNK file used to start the infection.</p>
  123. <p>This persistence mechanism seems a bit strange at first glance, as it always depends on the C2 being online. However, it is in fact clever, since the malware would not work without the C2. Thus, saving only the bootstrap .bat file ensures that the entire infection remains in memory. If persistence is achieved, it will start its true function, which is mainly to monitor browsers to check if they open banking pages.</p>
  124. <p>The browsers running on the machine are checked for possible domains accessed on the victim&#8217;s machine to verify the web page visited by the victim. The program will use the current foreground window (window in focus) and its PID; with the PID, it will extract the process name. Monitoring will only continue if the victim is using one of the following browsers:</p>
  125. <p>* Chrome<br />
  126. * Firefox<br />
  127. * MS Edge<br />
  128. * Brave<br />
  129. * Internet Explorer<br />
  130. * Specific bank web browser</p>
  131. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062253/maverick-banker-14-3.png" class="magnificImage"><img loading="lazy" decoding="async" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062253/maverick-banker-14-3.png" alt="" width="1814" height="636" class="aligncenter size-full wp-image-117760" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062253/maverick-banker-14-3.png 1814w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062253/maverick-banker-14-3-300x105.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062253/maverick-banker-14-3-1024x359.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062253/maverick-banker-14-3-768x269.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062253/maverick-banker-14-3-1536x539.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062253/maverick-banker-14-3-998x350.png 998w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062253/maverick-banker-14-3-740x259.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062253/maverick-banker-14-3-799x280.png 799w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062253/maverick-banker-14-3-800x280.png 800w" sizes="auto, (max-width: 1814px) 100vw, 1814px" /></a></p>
  132. <p>If any browser from the list above is running, the malware will use UI Automation to extract the title of the currently open tab and use this information with a predefined list of target online banking sites to determine whether to perform any action on them. The list of target banks is compressed with gzip, encrypted using AES-256, and stored as a base64 string. The AES initialization vector (IV) is stored in the first 16 bytes of the decoded base64 data, and the key is stored in the next 32 bytes. The actual encrypted data begins at offset 48.</p>
  133. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062323/maverick-banker-distributing12-upd.png" class="magnificImage"><img loading="lazy" decoding="async" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062323/maverick-banker-distributing12-upd.png" alt="" width="1689" height="1528" class="aligncenter size-full wp-image-117761" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062323/maverick-banker-distributing12-upd.png 1689w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062323/maverick-banker-distributing12-upd-300x271.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062323/maverick-banker-distributing12-upd-1024x926.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062323/maverick-banker-distributing12-upd-768x695.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062323/maverick-banker-distributing12-upd-1536x1390.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062323/maverick-banker-distributing12-upd-387x350.png 387w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062323/maverick-banker-distributing12-upd-740x669.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062323/maverick-banker-distributing12-upd-310x280.png 310w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15062323/maverick-banker-distributing12-upd-800x724.png 800w" sizes="auto, (max-width: 1689px) 100vw, 1689px" /></a></p>
  134. <p>This encryption mechanism is the same one used by <a href="https://securelist.com/coyote-multi-stage-banking-trojan/111846/" target="_blank" rel="noopener">Coyote</a>, a banking Trojan also written in .NET and documented by us in early 2024.</p>
  135. <p>If any of these banks are found, the program will decrypt another PE file using the same algorithm described in the <a href="#loader">.NET Loader</a> section of this report and will load it as an assembly, calling its entry point with the name of the open bank as an argument. This new PE is called &#8220;Maverick.Agent&#8221; and contains most of the banking logic for contacting the C2 and extracting data with it.</p>
  136. <h3 id="maverick-agent">Maverick Agent</h3>
  137. <p>The agent is the binary that will do most of the banker&#8217;s work; it will first check if it is running on a machine located in Brazil. To do this, it will check the following constraints:</p>
  138. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13213458/maverick-banker-distributing3.png" class="magnificImage"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-117732" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13213458/maverick-banker-distributing3.png" alt="" width="693" height="406" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13213458/maverick-banker-distributing3.png 693w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13213458/maverick-banker-distributing3-300x176.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13213458/maverick-banker-distributing3-597x350.png 597w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13213458/maverick-banker-distributing3-478x280.png 478w" sizes="auto, (max-width: 693px) 100vw, 693px" /></a></p>
  139. <p>What each of them does is:</p>
  140. <ul>
  141. <li><strong>IsValidBrazilianTimezone()</strong><br />
  142. Checks if the current time zone is within the Brazilian time zone range. Brazil has time zones between UTC-5 (-300 min) and UTC-2 (-120 min). If the current time zone is within this range, it returns &#8220;true&#8221;.</li>
  143. <li><strong>IsBrazilianLocale()</strong><br />
  144. Checks if the current thread&#8217;s language or locale is set to Brazilian Portuguese. For example, &#8220;pt-BR&#8221;, &#8220;pt_br&#8221;, or any string containing &#8220;portuguese&#8221; and &#8220;brazil&#8221;. Returns &#8220;true&#8221; if the condition is met.</li>
  145. <li><strong>IsBrazilianRegion()</strong><br />
  146. Checks if the system&#8217;s configured region is Brazil. It compares region codes like &#8220;BR&#8221;, &#8220;BRA&#8221;, or checks if the region name contains &#8220;brazil&#8221;. Returns &#8220;true&#8221; if the region is set to Brazil.</li>
  147. <li><strong>IsBrazilianDateFormat()</strong><br />
  148. Checks if the short date format follows the Brazilian standard. The Brazilian format is dd/MM/yyyy. The function checks if the pattern starts with &#8220;dd/&#8221; and contains &#8220;/MM/&#8221; or &#8220;dd/MM&#8221;.</li>
  149. </ul>
  150. <p>Right after the check, it will enable appropriate DPI support for the operating system and monitor type, ensuring that images are sharp, fit the correct scale (screen zoom), and work well on multiple monitors with different resolutions. Then, it will check for any running persistence, previously created in &#8220;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\&#8221;. If more than one file is found, it will delete the others based on &#8220;GetCreationTime&#8221; and keep only the most recently created one.</p>
  151. <h2 id="c2-communication">C2 communication</h2>
  152. <p>Communication uses the WatsonTCP library with SSL tunnels. It utilizes a local encrypted X509 certificate to protect the communication, which is another similarity to the Coyote malware. The connection is made to the host &#8220;casadecampoamazonas.com&#8221; on port 443. The certificate is exported as encrypted, and the password used to decrypt it is Maverick2025!. After the certificate is decrypted, the client will connect to the server.</p>
  153. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13213602/maverick-banker-distributing15.png" class="magnificImage"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-117733" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13213602/maverick-banker-distributing15.png" alt="" width="2048" height="527" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13213602/maverick-banker-distributing15.png 2048w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13213602/maverick-banker-distributing15-300x77.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13213602/maverick-banker-distributing15-1024x264.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13213602/maverick-banker-distributing15-768x198.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13213602/maverick-banker-distributing15-1536x395.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13213602/maverick-banker-distributing15-1360x350.png 1360w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13213602/maverick-banker-distributing15-740x190.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13213602/maverick-banker-distributing15-1088x280.png 1088w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13213602/maverick-banker-distributing15-800x206.png 800w" sizes="auto, (max-width: 2048px) 100vw, 2048px" /></a></p>
  154. <p>For the C2 to work, a specific password must be sent during the first contact. The password used by the agent is &#8220;101593a51d9c40fc8ec162d67504e221&#8221;. Using this password during the first connection will successfully authenticate the agent with the C2, and it will be ready to receive commands from the operator. The important commands are:</p>
  155. <table>
  156. <tbody>
  157. <tr>
  158. <td><strong>Command</strong></td>
  159. <td><strong>Description</strong></td>
  160. </tr>
  161. <tr>
  162. <td>INFOCLIENT</td>
  163. <td>Returns the information of the agent, which is used to identify it on the C2. The information used is described in the next section.</td>
  164. </tr>
  165. <tr>
  166. <td>RECONNECT</td>
  167. <td>Disconnect, sleep for a few seconds, and reconnect again to the C2.</td>
  168. </tr>
  169. <tr>
  170. <td>REBOOT</td>
  171. <td>Reboot the machine</td>
  172. </tr>
  173. <tr>
  174. <td>KILLAPPLICATION</td>
  175. <td>Exit the malware process</td>
  176. </tr>
  177. <tr>
  178. <td>SCREENSHOT</td>
  179. <td>Take a screenshot and send it to C2, compressed with gzip</td>
  180. </tr>
  181. <tr>
  182. <td>KEYLOGGER</td>
  183. <td>Enable the keylogger, capture all locally, and send only when the server specifically requests the logs</td>
  184. </tr>
  185. <tr>
  186. <td>MOUSECLICK</td>
  187. <td>Do a mouse click, used for the remote connection</td>
  188. </tr>
  189. <tr>
  190. <td>KEYBOARDONECHAR</td>
  191. <td>Press one char, used for the remote connection</td>
  192. </tr>
  193. <tr>
  194. <td>KEYBOARDMULTIPLESCHARS</td>
  195. <td>Send multiple characters used for the remote connection</td>
  196. </tr>
  197. <tr>
  198. <td>TOOGLEDESKTOP</td>
  199. <td>Enable remote connection and send multiple screenshots to the machine when they change (it computes a hash of each screenshot to ensure it is not the same image)</td>
  200. </tr>
  201. <tr>
  202. <td>TOOGLEINTERN</td>
  203. <td>Get a screenshot of a specific window</td>
  204. </tr>
  205. <tr>
  206. <td>GENERATEWINDOWLOCKED</td>
  207. <td>Lock the screen using one of the banks&#8217; home pages.</td>
  208. </tr>
  209. <tr>
  210. <td>LISTALLHANDLESOPENEDS</td>
  211. <td>Send all open handles to the server</td>
  212. </tr>
  213. <tr>
  214. <td>KILLPROCESS</td>
  215. <td>Kill some process by using its handle</td>
  216. </tr>
  217. <tr>
  218. <td>CLOSEHANDLE</td>
  219. <td>Close a handle</td>
  220. </tr>
  221. <tr>
  222. <td>MINIMIZEHANDLE</td>
  223. <td>Minimize a window using its handle</td>
  224. </tr>
  225. <tr>
  226. <td>MAXIMIZEHANDLE</td>
  227. <td>Maximize a window using its handle</td>
  228. </tr>
  229. <tr>
  230. <td>GENERATEWINDOWREQUEST</td>
  231. <td>Generate a phishing window asking for the victim&#8217;s credentials used by banks</td>
  232. </tr>
  233. <tr>
  234. <td>CANCELSCREENREQUEST</td>
  235. <td>Disable the phishing window</td>
  236. </tr>
  237. </tbody>
  238. </table>
  239. <p><strong>Agent profile info</strong></p>
  240. <p>In the &#8220;INFOCLIENT&#8221; command, the information sent to the C2 is as follows:</p>
  241. <ul>
  242. <li><strong>Agent ID:</strong> A SHA256 hash of all primary MAC addresses used by all interfaces</li>
  243. <li>Username</li>
  244. <li>Hostname</li>
  245. <li>Operating system version</li>
  246. <li>Client version (no value)</li>
  247. <li>Number of monitors</li>
  248. <li>Home page (home): &#8220;home&#8221; indicates which bank&#8217;s home screen should be used, sent before the Agent is decrypted by the banking application monitoring routine.</li>
  249. <li>Screen resolution</li>
  250. </ul>
  251. <h2 id="conclusion">Conclusion</h2>
  252. <p>According to our telemetry, all victims were in Brazil, but the Trojan has the potential to spread to other countries, as an infected victim can send it to another location. Even so, the malware is designed to target only Brazilians at the moment.<br />
  253. It is evident that this threat is very sophisticated and complex; the entire execution chain is relatively new, but the final payload has many code overlaps and similarities with the Coyote banking Trojan, which we documented in 2024. However, some of the techniques are not exclusive to Coyote and have been observed in other low-profile banking Trojans written in .NET. The agent&#8217;s structure is also different from how Coyote operated; it did not use this architecture before.<br />
  254. It is very likely that Maverick is a new banking Trojan using shared code from Coyote, which may indicate that the developers of Coyote have completely refactored and rewritten a large part of their components.<br />
  255. This is one of the most complex infection chains we have ever detected, designed to load a banking Trojan. It has infected many people in Brazil, and its worm-like nature allows it to spread exponentially by exploiting a very popular instant messenger. The impact is enormous. Furthermore, it demonstrates the use of AI in the code-writing process, specifically in certificate decryption, which may also indicate the involvement of AI in the overall code development. Maverick works like any other banking Trojan, but the worrying aspects are its delivery method and its significant impact.<br />
  256. We have detected the entire infection chain since day one, preventing victim infection from the initial LNK file. Kaspersky products detect this threat with the verdict <strong>HEUR:Trojan.Multi.Powenot.a</strong> and <strong>HEUR:Trojan-Banker.MSIL.Maverick.gen.</strong></p>
  257. <h2 id="iocs">IoCs</h2>
  258. <table>
  259. <tbody>
  260. <tr>
  261. <td>Dominio</td>
  262. <td>IP</td>
  263. <td>ASN</td>
  264. </tr>
  265. <tr>
  266. <td><a href="https://opentip.kaspersky.com/casadecampoamazonas.com/?icid=gl_sl_opentip_sm-team_9d1b9de83ae3bad6&#038;utm_source=SL&#038;utm_medium=SL&#038;utm_campaign=SL" target="_blank" rel="noopener"><strong>casadecampoamazonas[.]com</strong></a></td>
  267. <td>181.41.201.184</td>
  268. <td>212238</td>
  269. </tr>
  270. <tr>
  271. <td><a href="https://opentip.kaspersky.com/sorvetenopote.com/?icid=gl_sl_opentip_sm-team_153c14d9b642446a&#038;utm_source=SL&#038;utm_medium=SL&#038;utm_campaign=SL" target="_blank" rel="noopener"><strong>sorvetenopote[.]com</strong></a></td>
  272. <td>77.111.101.169</td>
  273. <td>396356</td>
  274. </tr>
  275. </tbody>
  276. </table>
  277. ]]></content:encoded>
  278. <wfw:commentRss>https://securelist.com/maverick-banker-distributing-via-whatsapp/117715/feed/</wfw:commentRss>
  279. <slash:comments>0</slash:comments>
  280. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15073641/SL-Maverick-Brazilian-banker-featured.jpg" width="2000" height="1000"><media:keywords>full</media:keywords></media:content>
  281. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15073641/SL-Maverick-Brazilian-banker-featured-1024x512.jpg" width="1024" height="512"><media:keywords>large</media:keywords></media:content>
  282. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15073641/SL-Maverick-Brazilian-banker-featured-300x150.jpg" width="300" height="150"><media:keywords>medium</media:keywords></media:content>
  283. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15073641/SL-Maverick-Brazilian-banker-featured-150x150.jpg" width="150" height="150"><media:keywords>thumbnail</media:keywords></media:content>
  284. </item>
  285. <item>
  286. <title>Mysterious Elephant: a growing threat</title>
  287. <link>https://securelist.com/mysterious-elephant-apt-ttps-and-tools/117596/</link>
  288. <comments>https://securelist.com/mysterious-elephant-apt-ttps-and-tools/117596/#respond</comments>
  289. <dc:creator><![CDATA[Noushin Shabab, Ye Jin]]></dc:creator>
  290. <pubDate>Wed, 15 Oct 2025 10:00:11 +0000</pubDate>
  291. <category><![CDATA[APT reports]]></category>
  292. <category><![CDATA[GReAT research]]></category>
  293. <category><![CDATA[Malware Technologies]]></category>
  294. <category><![CDATA[Targeted attacks]]></category>
  295. <category><![CDATA[Google Chrome]]></category>
  296. <category><![CDATA[Malware Descriptions]]></category>
  297. <category><![CDATA[Spear phishing]]></category>
  298. <category><![CDATA[Malware]]></category>
  299. <category><![CDATA[APT]]></category>
  300. <category><![CDATA[RAT Trojan]]></category>
  301. <category><![CDATA[Backdoor]]></category>
  302. <category><![CDATA[WhatsApp]]></category>
  303. <category><![CDATA[Data theft]]></category>
  304. <category><![CDATA[Defense evasion]]></category>
  305. <category><![CDATA[TTPs]]></category>
  306. <category><![CDATA[APAC]]></category>
  307. <category><![CDATA[RC4]]></category>
  308. <category><![CDATA[APT (Targeted attacks)]]></category>
  309. <category><![CDATA[Windows malware]]></category>
  310. <guid isPermaLink="false">https://kasperskycontenthub.com/securelist/?p=117596</guid>
  311.  
  312. <description><![CDATA[Kaspersky GReAT experts describe the latest Mysterious Elephant APT activity. The threat actor exfiltrates data related to WhatsApp and employs tools such as BabShell and MemLoader HidenDesk.]]></description>
  313. <content:encoded><![CDATA[<p><img width="990" height="400" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30145442/mysterious-elephant-featured-image-990x400.jpg" class="attachment-securelist-huge-promo size-securelist-huge-promo wp-post-image" alt="" decoding="async" loading="lazy" /></p><h2 id="introduction">Introduction</h2>
  314. <p>Mysterious Elephant is a highly active advanced persistent threat (APT) group that we at Kaspersky GReAT discovered in 2023. It has been consistently evolving and adapting its tactics, techniques, and procedures (TTPs) to stay under the radar. With a primary focus on targeting government entities and foreign affairs sectors in the Asia-Pacific region, the group has been using a range of sophisticated tools and techniques to infiltrate and exfiltrate sensitive information. Notably, Mysterious Elephant has been exploiting WhatsApp communications to steal sensitive data, including documents, pictures, and archive files.</p>
  315. <p>The group&#8217;s latest campaign, which began in early 2025, reveals a significant shift in their TTPs, with an increased emphasis on using new custom-made tools as well as customized open-source tools, such as BabShell and MemLoader modules, to achieve their objectives. In this report, we will delve into the history of Mysterious Elephant&#8217;s attacks, their latest tactics and techniques, and provide a comprehensive understanding of this threat.</p>
  316. <h2 id="the-emergence-of-mysterious-elephant">The emergence of Mysterious Elephant</h2>
  317. <p>Mysterious Elephant is a threat actor <a href="https://securelist.com/apt-trends-report-q2-2023/110231/#mysterious-elephant" target="_blank" rel="noopener">we&#8217;ve been tracking since 2023</a>. Initially, its intrusions resembled those of the Confucius threat actor. However, further analysis revealed a more complex picture. We found that Mysterious Elephant&#8217;s malware contained code from multiple APT groups, including Origami Elephant, Confucius, and SideWinder, which suggested deep collaboration and resource sharing between teams. Notably, our research indicates that the tools and code borrowed from the aforementioned APT groups were previously used by their original developers, but have since been abandoned or replaced by newer versions. However, Mysterious Elephant has not only adopted these tools, but also continued to maintain, develop, and improve them, incorporating the code into their own operations and creating new, advanced versions. The actor&#8217;s early attack chains featured distinctive elements, such as remote template injections and exploitation of <a href="https://www.cve.org/CVERecord?id=CVE-2017-11882" target="_blank" rel="noopener">CVE-2017-11882</a>, followed by the use of a downloader called &#8220;Vtyrei&#8221;, which was previously connected to Origami Elephant and later abandoned by this group. Over time, Mysterious Elephant has continued to upgrade its tools and expanded its operations, eventually earning its designation as a previously unidentified threat actor.</p>
  318. <h2 id="latest-campaign">Latest campaign</h2>
  319. <p>The group&#8217;s latest campaign, which was discovered in early 2025, reveals a significant shift in their TTPs. They are now using a combination of exploit kits, phishing emails, and malicious documents to gain initial access to their targets. Once inside, they deploy a range of custom-made and open-source tools to achieve their objectives. In the following sections, we&#8217;ll delve into the latest tactics and techniques used by Mysterious Elephant, including their new tools, infrastructure, and victimology.</p>
  320. <h3 id="spear-phishing">Spear phishing</h3>
  321. <p>Mysterious Elephant has started using spear phishing techniques to gain initial access. Phishing emails are tailored to each victim and are convincingly designed to mimic legitimate correspondence. The primary targets of this APT group are countries in the South Asia (SA) region, particularly Pakistan. Notably, this APT organization shows a strong interest and inclination towards diplomatic institutions, which is reflected in the themes covered by the threat actor&#8217;s spear phishing emails, as seen in bait attachments.</p>
  322. <div id="attachment_117597" style="width: 690px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30101320/mysterious-elephant1.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117597" class="size-full wp-image-117597" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30101320/mysterious-elephant1.png" alt="Spear phishing email used by Mysterious Elephant" width="680" height="617" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30101320/mysterious-elephant1.png 680w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30101320/mysterious-elephant1-300x272.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30101320/mysterious-elephant1-386x350.png 386w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30101320/mysterious-elephant1-309x280.png 309w" sizes="auto, (max-width: 680px) 100vw, 680px" /></a><p id="caption-attachment-117597" class="wp-caption-text">Spear phishing email used by Mysterious Elephant</p></div>
  323. <p>For example, the decoy document above concerns Pakistan&#8217;s application for a non-permanent seat on the United Nations Security Council for the 2025–2026 term.</p>
  324. <h3 id="malicious-tools">Malicious tools</h3>
  325. <p>Mysterious Elephant&#8217;s toolkit is a noteworthy aspect of their operations. The group has switched to using a variety of custom-made and open-source tools instead of employing known malware to achieve their objectives.</p>
  326. <h4 id="powershell-scripts">PowerShell scripts</h4>
  327. <p>The threat actor uses PowerShell scripts to execute commands, deploy additional payloads, and establish persistence. These scripts are loaded from C2 servers and often use legitimate system administration tools, such as curl and certutil, to download and execute malicious files.</p>
  328. <div id="attachment_117598" style="width: 696px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30101409/mysterious-elephant2.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117598" class="size-full wp-image-117598" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30101409/mysterious-elephant2.png" alt="Malicious PowerShell script seen in Mysterious Elephant's 2025 attacks" width="686" height="138" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30101409/mysterious-elephant2.png 686w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30101409/mysterious-elephant2-300x60.png 300w" sizes="auto, (max-width: 686px) 100vw, 686px" /></a><p id="caption-attachment-117598" class="wp-caption-text">Malicious PowerShell script seen in Mysterious Elephant&#8217;s 2025 attacks</p></div>
  329. <p>For example, the script above is used to download the next-stage payload and save it as <code>ping.exe</code>. It then schedules a task to execute the payload and send the results back to the C2 server. The task is set to run automatically in response to changes in the network profile, ensuring persistence on the compromised system. Specifically, it is triggered by network profile-related events (Microsoft-Windows-NetworkProfile/Operational), which can indicate a new network connection. A four-hour delay is configured after the event, likely to help evade detection.</p>
  330. <h4 id="babshell">BabShell</h4>
  331. <p>One of the most recent tools used by Mysterious Elephant is BabShell. This is a reverse shell tool written in C++ that enables attackers to connect to a compromised system. Upon execution, it gathers system information, including username, computer name, and MAC address, to identify the machine. The malware then enters an infinite loop of performing the following steps:</p>
  332. <ol>
  333. <li>It listens for and receives commands from the attacker-controlled C2 server.</li>
  334. <li>For each received command, BabShell creates a separate thread to execute it, allowing for concurrent execution of multiple commands.</li>
  335. <li>The output of each command is captured and saved to a file named <code>output_[timestamp].txt</code>, where [timestamp] is the current time. This allows the attacker to review the results of the commands.</li>
  336. <li>The contents of the <code>output_[timestamp].txt</code> file are then transmitted back to the C2 server, providing the attacker with the outcome of the executed commands and enabling them to take further actions, for instance, deploy a next-stage payload or execute additional malicious instructions.</li>
  337. </ol>
  338. <p>BabShell uses the following commands to execute command-line instructions and additional payloads it receives from the server:</p>
  339. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30101459/mysterious-elephant3.png" class="magnificImage"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-117599" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30101459/mysterious-elephant3.png" alt="" width="808" height="76" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30101459/mysterious-elephant3.png 808w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30101459/mysterious-elephant3-300x28.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30101459/mysterious-elephant3-768x72.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30101459/mysterious-elephant3-800x75.png 800w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30101459/mysterious-elephant3-740x70.png 740w" sizes="auto, (max-width: 808px) 100vw, 808px" /></a></p>
  340. <h4 id="customized-open-source-tools">Customized open-source tools</h4>
  341. <p>One of the latest modules used by Mysterious Elephant and loaded by BabShell is MemLoader HidenDesk.</p>
  342. <p>MemLoader HidenDesk is a reflective PE loader that loads and executes malicious payloads in memory. It uses encryption and compression to evade detection.</p>
  343. <p>MemLoader HidenDesk operates in the following manner:</p>
  344. <ol>
  345. <li>The malware checks the number of active processes and terminates itself if there are fewer than 40 processes running — a technique used to evade sandbox analysis.</li>
  346. <li>It creates a shortcut to its executable and saves it in the autostart folder, ensuring it can restart itself after a system reboot.</li>
  347. <li>The malware then creates a hidden desktop named &#8220;MalwareTech_Hidden&#8221; and switches to it, providing a covert environment for its activities. This technique is borrowed from an open-source project on GitHub.</li>
  348. <li>Using an RC4-like algorithm with the key <code>D12Q4GXl1SmaZv3hKEzdAhvdBkpWpwcmSpcD</code>, the malware decrypts a block of data from its own binary and executes it in memory as a shellcode. The shellcode&#8217;s sole purpose is to load and execute a PE file, specifically a sample of the commercial RAT called &#8220;Remcos&#8221; (MD5: 037b2f6233ccc82f0c75bf56c47742bb).</li>
  349. </ol>
  350. <p>Another recent loader malware used in the latest campaign is MemLoader Edge.</p>
  351. <p>MemLoader Edge is a malicious loader that embeds a sample of the VRat backdoor, utilizing encryption and evasion techniques.</p>
  352. <p>It operates in the following manner:</p>
  353. <ol>
  354. <li>The malware performs a network connectivity test by attempting to connect to the legitimate website <code>bing.com:445</code>, which is likely to fail since the 445 port is not open on the server side. If the test were to succeed, suggesting that the loader is possibly in an emulation or sandbox environment, the malware would drop an embedded picture on the machine and display a popup window with three unresponsive mocked-up buttons, then enter an infinite loop. This is done to complicate detection and analysis.</li>
  355. <li>If the connection attempt fails, the malware iterates through a 1016-byte array to find the correct XOR keys for decrypting the embedded PE file in two rounds. The process continues until the decrypted data matches the byte sequence of <code>MZ\x90</code>, indicating that the real XOR keys are found within the array.</li>
  356. <li>If the malware is unable to find the correct XOR keys, it will display the same picture and popup window as before, followed by a message box containing an error message after the window is closed.</li>
  357. <li>Once the PE file is successfully decrypted, it is loaded into memory using reflective loading techniques. The decrypted PE file is based on the open-source RAT vxRat, which is referred to as VRat due to the PDB string found in the sample:<br />
  358. <pre class="urvanov-syntax-highlighter-plain-tag">C:\Users\admin\source\repos\vRat_Client\Release\vRat_Client.pdb</pre>
  359. </li>
  360. </ol>
  361. <h4 id="whatsapp-specific-exfiltration-tools">WhatsApp-specific exfiltration tools</h4>
  362. <p>Spying on WhatsApp communications is a key aspect of the exfiltration modules employed by Mysterious Elephant. They are designed to steal sensitive data from compromised systems. The attackers have implemented WhatsApp-specific features into their exfiltration tools, allowing them to target files shared through the WhatsApp application and exfiltrate valuable information, including documents, pictures, archive files, and more. These modules employ various techniques, such as recursive directory traversal, XOR decryption, and Base64 encoding, to evade detection and upload the stolen data to the attackers&#8217; C2 servers.</p>
  363. <ul>
  364. <li><strong>Uplo Exfiltrator</strong></li>
  365. </ul>
  366. <p>The Uplo Exfiltrator is a data exfiltration tool that targets specific file types and uploads them to the attackers&#8217; C2 servers. It uses a simple XOR decryption to deobfuscate C2 domain paths and employs a recursive <a href="https://en.wikipedia.org/wiki/Depth-first_search" target="_blank" rel="noopener">depth-first directory traversal algorithm</a> to identify valuable files. The malware specifically targets file types that are likely to contain potentially sensitive data, including documents, spreadsheets, presentations, archives, certificates, contacts, and images. The targeted file extensions include .TXT, .DOC, .DOCX, .PDF, .XLS, .XLSX, .CSV, .PPT, .PPTX, .ZIP, .RAR, .7Z, .PFX, .VCF, .JPG, .JPEG, and .AXX.</p>
  367. <ul>
  368. <li><strong>Stom Exfiltrator</strong></li>
  369. </ul>
  370. <p>The Stom Exfiltrator is a commonly used exfiltration tool that recursively searches specific directories, including the &#8220;Desktop&#8221; and &#8220;Downloads&#8221; folders, as well as all drives except the C drive, to collect files with predefined extensions. Its latest variant is specifically designed to target files shared through the WhatsApp application. This version uses a hardcoded folder path to locate and exfiltrate such files:</p><pre class="urvanov-syntax-highlighter-plain-tag">%AppData%\\Packages\\xxxxx.WhatsAppDesktop_[WhatsApp ID]\\LocalState\\Shared\\transfers\\</pre><p>
  371. <p>The targeted file extensions include .PDF, .DOCX, .TXT, .JPG, .PNG, .ZIP, .RAR, .PPTX, .DOC, .XLS, .XLSX, .PST, and .OST.</p>
  372. <ul>
  373. <li><strong>ChromeStealer Exfiltrator</strong></li>
  374. </ul>
  375. <p>The ChromeStealer Exfiltrator is another exfiltration tool used by Mysterious Elephant that targets Google Chrome browser data, including cookies, tokens, and other sensitive information. It searches specific directories within the Chrome user data of the most recently used Google Chrome profile, including the IndexedDB directory and the &#8220;Local Storage&#8221; directory. The malware uploads all files found in these directories to the attacker-controlled C2 server, potentially exposing sensitive data like chat logs, contacts, and authentication tokens. The response from the C2 server suggests that this tool was also after stealing files related to WhatsApp. The ChromeStealer Exfiltrator employs string obfuscation to evade detection.</p>
  376. <h2 id="infrastructure">Infrastructure</h2>
  377. <p>Mysterious Elephant&#8217;s infrastructure is a network of domains and IP addresses. The group has been using a range of techniques, including wildcard DNS records, to generate unique domain names for each request. This makes it challenging for security researchers to track and monitor their activities. The attackers have also been using virtual private servers (VPS) and cloud services to host their infrastructure. This allows them to easily scale and adapt their operations to evade detection. According to our data, this APT group has utilized the services of numerous VPS providers in their operations. Nevertheless, our analysis of the statistics has revealed that Mysterious Elephant appears to have a preference for certain VPS providers.</p>
  378. <div class="js-infogram-embed" data-id="_/PYFxzOySORx2YCuG6lUv" data-type="interactive" data-title="01-EN-RU-Mysterious Elephant charts" style="min-height:;"></div>
  379. <p style="text-align: center;font-style: italic;font-weight: bold;margin-top: -10px"><em>VPS providers most commonly used by Mysterious Elephant (<a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30102127/mysterious-elephant4.png" target="_blank" rel="noopener">download</a>)</em></p>
  380. <h2 id="victimology">Victimology</h2>
  381. <p>Mysterious Elephant&#8217;s primary targets are government entities and foreign affairs sectors in the Asia-Pacific region. The group has been focusing on Pakistan, Bangladesh, and Sri Lanka, with a lower number of victims in other countries. The attackers have been using highly customized payloads tailored to specific individuals, highlighting their sophistication and focus on targeted attacks.</p>
  382. <p>The group&#8217;s victimology is characterized by a high degree of specificity. Attackers often use personalized phishing emails and malicious documents to gain initial access. Once inside, they employ a range of tools and techniques to escalate privileges, move laterally, and exfiltrate sensitive information.</p>
  383. <ul>
  384. <li>Most targeted countries: Pakistan, Bangladesh, Afghanistan, Nepal and Sri Lanka</li>
  385. </ul>
  386. <div class="js-infogram-embed" data-id="_/R4Utu2bH5IoYCk7MIBoH" data-type="interactive" data-title="01 EN Mysterious Elephant charts 2" style="min-height:;"></div>
  387. <p style="text-align: center;font-style: italic;font-weight: bold;margin-top: -10px"><em>Countries targeted most often by Mysterious Elephant (<a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14095041/02-en-mysterious-elephant-charts.png" target="_blank" rel="noopener">download</a>)</em></p>
  388. <ul>
  389. <li>Primary targets: government entities and foreign affairs sectors</li>
  390. </ul>
  391. <div class="js-infogram-embed" data-id="_/NNQDAbzeYeYkE3UXVrZ5" data-type="interactive" data-title="03 EN Mysterious Elephant charts" style="min-height:;"></div>
  392. <p style="text-align: center;font-style: italic;font-weight: bold;margin-top: -10px"><em>Industries most targeted by Mysterious Elephant (<a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13125733/03-en-mysterious-elephant-charts.png" target="_blank" rel="noopener">download</a>)</em></p>
  393. <h2 id="conclusion">Conclusion</h2>
  394. <p>In conclusion, Mysterious Elephant is a highly sophisticated and active Advanced Persistent Threat group that poses a significant threat to government entities and foreign affairs sectors in the Asia-Pacific region. Through their continuous evolution and adaptation of tactics, techniques, and procedures, the group has demonstrated the ability to evade detection and infiltrate sensitive systems. The use of custom-made and open-source tools, such as BabShell and MemLoader, highlights their technical expertise and willingness to invest in developing advanced malware.</p>
  395. <p>The group&#8217;s focus on targeting specific organizations, combined with their ability to tailor their attacks to specific victims, underscores the severity of the threat they pose. The exfiltration of sensitive information, including documents, pictures, and archive files, can have significant consequences for national security and global stability.</p>
  396. <p>To counter the Mysterious Elephant threat, it is essential for organizations to implement <a href="https://www.kaspersky.com/enterprise-security/endpoint-detection-response-edr?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team___knext____b31b3f3de449f764" target="_blank" rel="noopener">robust security measures</a>, including regular software updates, <a href="https://www.kaspersky.com/enterprise-security/anti-targeted-attack-platform?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team___kata____86b6b7fe75e32725" target="_blank" rel="noopener">network monitoring</a>, and <a href="https://asap.kaspersky.com/?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team___kasap____b3c004b7eec21817" target="_blank" rel="noopener">employee training</a>. Additionally, international cooperation and information sharing among cybersecurity professionals, governments, and industries are crucial in tracking and disrupting the group&#8217;s activities.</p>
  397. <p>Ultimately, staying ahead of Mysterious Elephant and other APT groups requires a proactive and collaborative approach to cybersecurity. By understanding their TTPs, sharing threat intelligence, and implementing effective countermeasures, we can reduce the risk of successful attacks and protect sensitive information from falling into the wrong hands.</p>
  398. <h2 id="indicators-of-compromise">Indicators of compromise</h2>
  399. <h3 id="file-hashes">File hashes</h3>
  400. <p><strong>Malicious documents</strong><br />
  401. <a href="https://opentip.kaspersky.com/c12ea05baf94ef6f0ea73470d70db3b2/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______09ab9e63c2fbae18&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">c12ea05baf94ef6f0ea73470d70db3b2</a> M6XA.rar<br />
  402. <a href="https://opentip.kaspersky.com/8650fff81d597e1a3406baf3bb87297f/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______a7b7bdc14f0ecf16&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">8650fff81d597e1a3406baf3bb87297f</a> 2025-013-PAK-MoD-Invitation_the_UN_Peacekeeping.rar</p>
  403. <p><strong>MemLoader HidenDesk</strong><br />
  404. <a href="https://opentip.kaspersky.com/658eed7fcb6794634bbdd7f272fcf9c6/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______c1ee1e8efe731ce5&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">658eed7fcb6794634bbdd7f272fcf9c6</a> STI.dll<br />
  405. <a href="https://opentip.kaspersky.com/4c32e12e73be9979ede3f8fce4f41a3a/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______39679c1e6198215a&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">4c32e12e73be9979ede3f8fce4f41a3a</a> STI.dll</p>
  406. <p><strong>MemLoader Edge</strong><br />
  407. <a href="https://opentip.kaspersky.com/3caaf05b2e173663f359f27802f10139/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______517ed2c79ff6857a&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">3caaf05b2e173663f359f27802f10139</a> Edge.exe, debugger.exe, runtime.exe<br />
  408. <a href="https://opentip.kaspersky.com/bc0fc851268afdf0f63c97473825ff75/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______4f3755f64aba0268&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">bc0fc851268afdf0f63c97473825ff75</a></p>
  409. <p><strong>BabShell</strong><br />
  410. <a href="https://opentip.kaspersky.com/85c7f209a8fa47285f08b09b3868c2a1/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______5fd77beb36827bdb&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">85c7f209a8fa47285f08b09b3868c2a1</a><br />
  411. <a href="https://opentip.kaspersky.com/f947ff7fb94fa35a532f8a7d99181cf1/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______cff906b0140720d0&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">f947ff7fb94fa35a532f8a7d99181cf1</a></p>
  412. <p><strong>Uplo Exfiltrator</strong><br />
  413. <a href="https://opentip.kaspersky.com/cf1d14e59c38695d87d85af76db9a861/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______ffa5f9bd347e41df&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">cf1d14e59c38695d87d85af76db9a861</a> SXSHARED.dll</p>
  414. <p><strong>Stom Exfiltrator</strong><br />
  415. <a href="https://opentip.kaspersky.com/ff1417e8e208cadd55bf066f28821d94/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______4bbcc5b773fb873b&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">ff1417e8e208cadd55bf066f28821d94</a><br />
  416. <a href="https://opentip.kaspersky.com/7ee45b465dcc1ac281378c973ae4c6a0/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______64062702f8c05486&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">7ee45b465dcc1ac281378c973ae4c6a0</a> ping.exe<br />
  417. <a href="https://opentip.kaspersky.com/b63316223e952a3a51389a623eb283b6/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______34280e71815f9819&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">b63316223e952a3a51389a623eb283b6</a> ping.exe<br />
  418. <a href="https://opentip.kaspersky.com/e525da087466ef77385a06d969f06c81/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______00c019d83beca9e0&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">e525da087466ef77385a06d969f06c81</a><br />
  419. <a href="https://opentip.kaspersky.com/78b59ea529a7bddb3d63fcbe0fe7af94/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______02431ea07e815c6c&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">78b59ea529a7bddb3d63fcbe0fe7af94</a></p>
  420. <p><strong>ChromeStealer Exfiltrator</strong><br />
  421. <a href="https://opentip.kaspersky.com/9e50adb6107067ff0bab73307f5499b6/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______002f6ae0f77b2068&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">9e50adb6107067ff0bab73307f5499b6</a> WhatsAppOB.exe</p>
  422. <h3 id="domains-ips">Domains/IPs</h3>
  423. <p><a href="https://opentip.kaspersky.com/hxxps%3a%2f%2fstorycentral.net/?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______546a9c2d940aced9&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">hxxps://storycentral[.]net</a><br />
  424. <a href="https://opentip.kaspersky.com/hxxp%3a%2f%2flistofexoticplaces.com/?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______df61d5264bb34b52&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">hxxp://listofexoticplaces[.]com</a><br />
  425. <a href="https://opentip.kaspersky.com/hxxps%3a%2f%2fmonsoonconference.com/?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______95a175e16a9f2f66&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">hxxps://monsoonconference[.]com</a><br />
  426. <a href="https://opentip.kaspersky.com/hxxp%3a%2f%2fmediumblog.online/?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______a1cb20769a3c44cb&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">hxxp://mediumblog[.]online:4443</a><br />
  427. <a href="https://opentip.kaspersky.com/hxxp%3a%2f%2fcloud.givensolutions.online/?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______31ac06df427819a4&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">hxxp://cloud.givensolutions[.]online:4443</a><br />
  428. <a href="https://opentip.kaspersky.com/hxxp%3a%2f%2fcloud.qunetcentre.org/?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______97e683db289c2d2d&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">hxxp://cloud.qunetcentre[.]org:443</a><br />
  429. <a href="https://opentip.kaspersky.com/solutions.fuzzy-network.tech/?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______80e055d2bfaec218&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">solutions.fuzzy-network[.]tech</a><br />
  430. <a href="https://opentip.kaspersky.com/pdfplugins.com/?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______fa3c26ff03f790a8&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">pdfplugins[.]com</a><br />
  431. <a href="https://opentip.kaspersky.com/file-share.officeweb.live/?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______1906cf37a247699a&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">file-share.officeweb[.]live</a><br />
  432. <a href="https://opentip.kaspersky.com/fileshare-avp.ddns.net/?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______324cee9e263be2af&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">fileshare-avp.ddns[.]net</a><br />
  433. <a href="https://opentip.kaspersky.com/91.132.95.148/?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______ab2914e9238c3621&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">91.132.95[.]148</a><br />
  434. <a href="https://opentip.kaspersky.com/62.106.66.80/?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______847c267eca71ef78&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">62.106.66[.]80</a><br />
  435. <a href="https://opentip.kaspersky.com/158.255.215.45/?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______2d778fa9b216c661&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">158.255.215[.]45</a></p>
  436. ]]></content:encoded>
  437. <wfw:commentRss>https://securelist.com/mysterious-elephant-apt-ttps-and-tools/117596/feed/</wfw:commentRss>
  438. <slash:comments>0</slash:comments>
  439. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30145442/mysterious-elephant-featured-image.jpg" width="2000" height="1000"><media:keywords>full</media:keywords></media:content>
  440. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30145442/mysterious-elephant-featured-image-1024x512.jpg" width="1024" height="512"><media:keywords>large</media:keywords></media:content>
  441. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30145442/mysterious-elephant-featured-image-300x150.jpg" width="300" height="150"><media:keywords>medium</media:keywords></media:content>
  442. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30145442/mysterious-elephant-featured-image-150x150.jpg" width="150" height="150"><media:keywords>thumbnail</media:keywords></media:content>
  443. </item>
  444. <item>
  445. <title>Signal in the noise: what hashtags reveal about hacktivism in 2025</title>
  446. <link>https://securelist.com/dfi-meta-hacktivist-report/117708/</link>
  447. <comments>https://securelist.com/dfi-meta-hacktivist-report/117708/#respond</comments>
  448. <dc:creator><![CDATA[Kaspersky Security Services]]></dc:creator>
  449. <pubDate>Tue, 14 Oct 2025 10:00:09 +0000</pubDate>
  450. <category><![CDATA[Research]]></category>
  451. <category><![CDATA[SOC, TI and IR posts]]></category>
  452. <category><![CDATA[Twitter]]></category>
  453. <category><![CDATA[Darknet]]></category>
  454. <category><![CDATA[Threat intelligence]]></category>
  455. <category><![CDATA[hacktivists]]></category>
  456. <category><![CDATA[Telegram]]></category>
  457. <category><![CDATA[Cybersecurity]]></category>
  458. <guid isPermaLink="false">https://kasperskycontenthub.com/securelist/?p=117708</guid>
  459.  
  460. <description><![CDATA[Kaspersky researchers identified over 2000 unique hashtags across 11,000 hacktivist posts on the surface web and the dark web to find out how hacktivist campaigns function and whom they target.]]></description>
  461. <content:encoded><![CDATA[<p><img width="990" height="400" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14082820/SL-DFI-META-report-featured-1200-990x400.jpg" class="attachment-securelist-huge-promo size-securelist-huge-promo wp-post-image" alt="" decoding="async" loading="lazy" /></p><p>What do hacktivist campaigns look like in 2025? To answer this question, we analyzed more than 11,000 posts produced by over 120 hacktivist groups circulating across both the surface web and the dark web, with a particular focus on groups targeting MENA countries. The primary goal of our research is to highlight patterns in hacktivist operations, including attack methods, public warnings, and stated intent. The analysis is undertaken exclusively from a cybersecurity perspective and anchored in the principle of neutrality.</p>
  462. <p>Hacktivists are politically motivated threat actors who typically value visibility over sophistication. Their tactics are designed for maximum visibility, reach, and ease of execution, rather than stealth or technical complexity. The term &#8220;hacktivist&#8221; may refer to either the administrator of a community who initiates the attack or an ordinary subscriber who simply participates in the campaign.</p>
  463. <h2 id="key-findings">Key findings</h2>
  464. <p>While it may be assumed that most operations unfold on hidden forums, in fact, most hacktivist planning and mobilization happens in the open. Telegram has become the command center for today&#8217;s hacktivist groups, hosting the highest density of attack planning and calls to action. The second place is occupied by X (ex-Twitter).</p>
  465. <div id="attachment_117709" style="width: 790px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13172136/META-hacktivist-channels.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117709" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13172136/META-hacktivist-channels.png" alt="Distribution of social media references in posts published in 2025" width="780" height="361" class="size-full wp-image-117709" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13172136/META-hacktivist-channels.png 780w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13172136/META-hacktivist-channels-300x139.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13172136/META-hacktivist-channels-768x355.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13172136/META-hacktivist-channels-756x350.png 756w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13172136/META-hacktivist-channels-740x342.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13172136/META-hacktivist-channels-605x280.png 605w" sizes="auto, (max-width: 780px) 100vw, 780px" /></a><p id="caption-attachment-117709" class="wp-caption-text">Distribution of social media references in posts published in 2025</p></div>
  466. <p>Although we focused on hacktivists operating in MENA, the targeting of the groups under review is global, extending well beyond the region. There are victims throughout Europe and Middle East, as well as Argentina, the United States, Indonesia, India, Vietnam, Thailand, Cambodia, Türkiye, and others.</p>
  467. <h3 id="hashtags-as-the-connective-tissue-of-hacktivist-operations">Hashtags as the connective tissue of hacktivist operations</h3>
  468. <p>One notable feature of hacktivist posts and messages on dark web sites is the frequent use of hashtags (#words). Used in their posts constantly, hashtags often serve as political slogans, amplifying messages, coordinating activity or claiming credit for attacks. The most common themes are political statements and hacktivist groups names, though hashtags sometimes reference geographical locations, such as specific countries or cities.</p>
  469. <p>Hashtags also map alliances and momentum. We have identified 2063 unique tags in 2025: 1484 appearing for the first time, and many tied directly to specific groups or joint campaigns. Most tags are short-lived, lasting about two months, with &#8220;popular&#8221; ones persisting longer when amplified by alliances; channel bans contribute to attrition.</p>
  470. <p>Operationally, reports of completed attacks dominate hashtagged content (58%), and within those, DDoS is the workhorse (61%). Spikes in threatening rhetoric do not by themselves predict more attacks, but timing matters: when threats are published, they typically refer to actions in the near term, i.e. the same week or month, making early warning from open-channel monitoring materially useful.</p>
  471. <p>The full version of the report details the following findings:</p>
  472. <ul>
  473. <li>How long it typically takes for an attack to be reported after an initial threat post</li>
  474. <li>How hashtags are used to coordinate attacks or claim credit</li>
  475. <li>Patterns across campaigns and regions</li>
  476. <li>The types of cyberattacks being promoted or celebrated</li>
  477. </ul>
  478. <h2 id="practical-takeaways-and-recommendations">Practical takeaways and recommendations</h2>
  479. <p>For defenders and corporate leaders, we recommend the following:</p>
  480. <ul>
  481. <li>Prioritize scalable DDoS mitigation and proactive security measures.</li>
  482. <li>Treat public threats as short-horizon indicators rather than long-range forecasts.</li>
  483. <li>Invest in continuous monitoring across Telegram and related ecosystems to discover alliance announcements, threat posts, and cross-posted &#8220;proof&#8221; rapidly.</li>
  484. </ul>
  485. <p>Even organizations outside geopolitical conflict zones should assume exposure: hacktivist campaigns seek reach and spectacle, not narrow geography, and hashtags remain a practical lens for separating noise from signals that demand action.</p>
  486. <p><strong>To download the full report, please fill in the form below.</strong></p>
  487. <p><script data-b24-form="inline/1808/7dlezh" data-skip-moving="true">
  488.              (function (w, d, u) {
  489.                var s = d.createElement("script");
  490.                s.async = true;
  491.                s.src = u + "?" + ((Date.now() / 180000) | 0);
  492.                var h = d.getElementsByTagName("script")[0];
  493.                h.parentNode.insertBefore(s, h);
  494.              })(window, document, "https://cdn.bitrix24.eu/b30707545/crm/form/loader_1808.js");
  495.            </script><br />
  496.            <script src="https://storage.yandexcloud.net/kasperskyform/validator.js"></script><br />
  497.            <script>
  498.              initBxFormValidator({
  499.                formId: "inline/1808/7dlezh",
  500.                emailFieldName: "CONTACT_EMAIL",
  501.                redirectUrl: "https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13172551/Hacktivist_report-DFI-META.pdf",
  502.                naturalFieldNames: ["CONTACT_UF_CRM_NODES"],
  503.                lengthRestrictedFieldNames: {
  504.                  CONTACT_EMAIL: 250,
  505.                  CONTACT_POST: 128,
  506.                  CONTACT_NAME: 50,
  507.                  CONTACT_UF_CRM_COMPANY: 255,
  508.                  CONTACT_UF_CRM_COMPANY_TAX_ID: 50,
  509.                  CONTACT_UF_CRM_PRODUCT_INTEREST: 255,
  510.                  CONTACT_UF_CRM_FORM_QUESTION_2: 255,
  511.                  CONTACT_UF_CRM_FORM_QUESTION_3: 255,
  512.                  CONTACT_UF_CRM_FORM_QUESTION_5: 255,
  513.                },
  514.              });
  515.            </script></p>
  516. ]]></content:encoded>
  517. <wfw:commentRss>https://securelist.com/dfi-meta-hacktivist-report/117708/feed/</wfw:commentRss>
  518. <slash:comments>0</slash:comments>
  519. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14082820/SL-DFI-META-report-featured-1200.jpg" width="1200" height="762"><media:keywords>full</media:keywords></media:content>
  520. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14082820/SL-DFI-META-report-featured-1200-1024x650.jpg" width="1024" height="650"><media:keywords>large</media:keywords></media:content>
  521. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14082820/SL-DFI-META-report-featured-1200-300x191.jpg" width="300" height="191"><media:keywords>medium</media:keywords></media:content>
  522. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14082820/SL-DFI-META-report-featured-1200-150x150.jpg" width="150" height="150"><media:keywords>thumbnail</media:keywords></media:content>
  523. </item>
  524. <item>
  525. <title>The king is dead, long live the king! Windows 10 EOL and Windows 11 forensic artifacts</title>
  526. <link>https://securelist.com/forensic-artifacts-in-windows-11/117680/</link>
  527. <comments>https://securelist.com/forensic-artifacts-in-windows-11/117680/#respond</comments>
  528. <dc:creator><![CDATA[Kirill Magaskin]]></dc:creator>
  529. <pubDate>Tue, 14 Oct 2025 08:00:57 +0000</pubDate>
  530. <category><![CDATA[Research]]></category>
  531. <category><![CDATA[Microsoft Windows]]></category>
  532. <category><![CDATA[Digital forensics]]></category>
  533. <category><![CDATA[Forensic journey]]></category>
  534. <category><![CDATA[Cybersecurity]]></category>
  535. <guid isPermaLink="false">https://kasperskycontenthub.com/securelist/?p=117680</guid>
  536.  
  537. <description><![CDATA[With the end of Windows 10 support approaching, we discuss which forensic artifacts in Windows 11 may be of interest.]]></description>
  538. <content:encoded><![CDATA[<p><img width="990" height="400" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13154941/SL-forensic-artifacts-in-windows-11-featured-990x400.jpg" class="attachment-securelist-huge-promo size-securelist-huge-promo wp-post-image" alt="" decoding="async" loading="lazy" /></p><h2 id="introduction">Introduction</h2>
  539. <p>Windows 11 was released a few years ago, yet it has seen relatively weak enterprise adoption. According to statistics from our Global Emergency Response Team (GERT) investigations, as recently as early 2025, we found that Windows 7, which reached end of support in 2020, was encountered only slightly less often than the newest operating system. Most systems still run Windows 10.</p>
  540. <div class="js-infogram-embed" data-id="_/wUFDDTvIb5MX90BS2iz7" data-type="interactive" data-title="01 EN-RU-ES-PT-BR Win 11 graph" style="min-height:;"></div>
  541. <p style="text-align: center;font-style: italic;font-weight: bold;margin-top: -10px"><em>Distribution of Windows versions in organizations&#8217; infrastructure. The statistics are based on the Global Emergency Response Team (GERT) data (<a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10100944/01-en-ru-es-pt-br-win-11-graph.png" target="_blank" rel="noopener">download</a>)</em></p>
  542. <p>The most widely used operating system was released more than a decade ago, and Microsoft discontinues its support on October 14, 2025. This means we are certainly going to see an increase in the number of Windows 11 systems in organizations where we provide incident response services. This is why we decided to offer a brief overview of changes to forensic artifacts in this operating system. The information should be helpful to our colleagues in the field. The artifacts described here are relevant for Windows 11 24H2, which is the latest OS version at the time of writing this.</p>
  543. <h2 id="what-is-new-in-windows-11">What is new in Windows 11</h2>
  544. <h3 id="recall">Recall</h3>
  545. <p>The Recall feature was first introduced in May 2024. It allows the computer to remember everything a user has done on the device over the past few months. It works by taking screenshots of the entire display every few seconds. A local AI engine then analyzes these screenshots in the background, extracting all useful information, which is subsequently saved to a database. This database is then used for intelligent searching. Since May 2025, Recall has been broadly available on computers equipped with an NPU, a dedicated chip for AI computations, which is currently compatible only with ARM CPUs.</p>
  546. <p>Microsoft Recall is certainly one of the most highly publicized and controversial features announced for Windows 11. Since its initial reveal, it <a href="https://www.kaspersky.com/blog/how-to-disable-copilot-recall-spyware/51522/" target="_blank" rel="noopener">has been the subject of criticism within the cybersecurity community</a> because of the potential threat it poses to data privacy. Microsoft refined Recall before its release, yet <a href="https://www.kaspersky.com/blog/recall-2025-risks-benefits/53407/" target="_blank" rel="noopener">certain concerns remain</a>. Because of its controversial nature, the option is disabled by default in corporate builds of Windows 11. However, examining the artifacts it creates is worthwhile, just in case an attacker or malicious software activates it. In theory, an organization&#8217;s IT department could enable Recall using Group Policies, but we consider that scenario unlikely.</p>
  547. <p>As previously mentioned, Recall takes screenshots, which naturally requires temporary storage before analysis. The raw JPEG images can be found at <code>%AppData%\Local\CoreAIPlatform.00\UKP\{GUID}\ImageStore\*</code>. The filenames themselves are the screenshot identifiers (more on those later).</p>
  548. <p>Along with the screenshots, their metadata is stored within the standard Exif.Photo.MakerNote (0x927c) tag. This tag holds a significant amount of interesting data, such as the boundaries of the foreground window, the capture timestamp, the window title, the window identifier, and the full path of the process that launched the window. Furthermore, if a browser is in use during the screenshot capture, the URI and domain may be preserved, among other details.</p>
  549. <p>Recall is activated on a per-user basis. A key in the user&#8217;s registry hive, specifically <code>Software\Policies\Microsoft\Windows\WindowsAI\</code>, is responsible for enabling and disabling the saving of these screenshots. Microsoft has also introduced <a href="https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-windowsai" target="_blank" rel="noopener">several new registry keys</a> associated with Recall management in the latest Windows 11 builds.</p>
  550. <p>It is important to note that the version of the feature refined following public controversy includes a specific filter intended to prevent the saving of screenshots and text when potentially sensitive information is on the screen. This includes, for example, an incognito browser window, a payment data input field, or a password manager. However, <a href="https://doublepulsar.com/microsoft-recall-on-copilot-pc-testing-the-security-and-privacy-implications-ddb296093b6c" target="_blank" rel="noopener">researchers</a> have indicated that this filter may not always engage reliably.</p>
  551. <p>To enable fast searches across all data captured from screenshots, the system uses two DiskANN vector databases (<code>SemanticTextStore.sidb</code> and <code>SemanticImageStore.sidb</code>). However, the standard SQLite database is the most interesting one for investigation: <code>%AppData%\Local\CoreAIPlatform.00\UKP\{GUID}\ukg.db</code>, which consists of 20 tables. In the latest release, it is accessible without administrative privileges, yet it is encrypted. At the time of writing this post, there are no publicly known methods to decrypt the database directly. Therefore, we will examine the most relevant tables from the 2024 Windows 11 beta release with Recall.</p>
  552. <ul>
  553. <li>The <code>App</code> table holds data about the process that launched the application&#8217;s graphical user interface window.</li>
  554. <li>The <code>AppDwellTime</code> table contains information such as the full path of the process that initiated the application GUI window (WindowsAppId column), the date and time it was launched (HourOfDay, DayOfWeek, HourStartTimestamp), and the duration the window&#8217;s display (DwellTime).</li>
  555. <li>The <code>WindowCapture</code> table records the type of event (Name column):
  556. <ul>
  557. <li><strong>WindowCreatedEvent</strong> indicates the creation of the first instance of the application window. It can be correlated with the process that created the window.</li>
  558. <li><strong>WindowChangedEvent</strong> tracks changes to the window instance. It allows monitoring movements or size changes of the window instance with the help of the WindowId column, which contains the window&#8217;s identifier.</li>
  559. <li><strong>WindowCaptureEvent</strong> signifies the creation of a screen snapshot that includes the application window. Besides the window identifier, it contains an image identifier (ImageToken). The value of this token can later be used to retrieve the JPEG snapshot file from the aforementioned ImageStore directory, as the filename corresponds to the image identifier.</li>
  560. <li><strong>WindowDestroyedEvent</strong> signals the closing of the application window.</li>
  561. <li><strong>ForegroundChangedEvent</strong> does not contain useful data from a forensics perspective.</li>
  562. </ul>
  563. <p>The <code>WindowCapture</code> table also includes a flag indicating whether the application window was in the foreground (IsForeground column), the window boundaries as screen coordinates (WindowBounds), the window title (WindowTitle), a service field for properties (Properties), and the event timestamp (TimeStamp).
  564. </li>
  565. </ul>
  566. <ul>
  567. <li><code>WindowCaptureTextIndex_content</span></code> contains the text extracted with Optical Character Recognition (OCR) from the snapshot (c2 column), the window title (WindowTitle), the application path (App.Path), the snapshot timestamp (TimeStamp), and the name (Name). This table can be used in conjunction with the WindowCapture (the c0 and Id columns hold identical data, which can be used for joining the tables) and App tables (identical data resides in the AppId and Id columns).</li>
  568. </ul>
  569. <p>Recall artifacts (if the feature was enabled on the system prior to the incident) represent a &#8220;goldmine&#8221; for the incident responder. They allow for a detailed reconstruction of the attacker&#8217;s activity within the compromised system. Conversely, this same functionality can be weaponized: as mentioned previously, the private information filter in Recall does not work flawlessly. Consequently, attackers and malware can exploit it to locate credentials and other sensitive information.</p>
  570. <h3 id="updated-standard-applications">Updated standard applications</h3>
  571. <p>Standard applications in Windows 11 have also undergone updates, and for some, this involved changes to both the interface and functionality. Specifically, applications such as Notepad, File Explorer, and the Command Prompt in this version of the OS now support multi-tab mode. Notably, Notepad retains the state of these tabs even after the process terminates. Therefore, Windows 11 now has new artifacts associated with the usage of this application. Our colleague, AbdulRhman Alfaifi, researched these in detail; his work is available <a href="https://u0041.co/posts/articals/exploring-windows-artifacts-notepad-files/" target="_blank" rel="noopener">here</a>.</p>
  572. <p>The main directory for Notepad artifacts in Windows 11 is located at <code>%LOCALAPPDATA%\Packages\Microsoft.WindowsNotepad_8wekyb3d8bbwe\LocalState\</code>.<br />
  573. This directory contains two subdirectories:</p>
  574. <ul>
  575. <li><strong>TabState</strong> stores a {GUID}.bin state file for each Notepad tab. This file contains the tab&#8217;s contents if the user did not save it to a file. For saved tabs, the file contains the full path to the saved content, the SHA-256 hash of the content, the content itself, the last write time to the file, and other details.</li>
  576. <li><strong>WindowsState</strong> stores information about the application window state. This includes the total number of tabs, their order, the currently active tab, and the size and position of the application window on the screen. The state file is named either *.0.bin or *.1.bin.</li>
  577. </ul>
  578. <p>The structure of {GUID}.bin for saved tabs is as follows:</p>
  579. <table>
  580. <tbody>
  581. <tr>
  582. <td><strong>Field</strong></td>
  583. <td><strong>Type</strong></td>
  584. <td><strong>Value and explanation</strong></td>
  585. </tr>
  586. <tr>
  587. <td>signature</td>
  588. <td>[u8;2]</td>
  589. <td>NP</td>
  590. </tr>
  591. <tr>
  592. <td>?</td>
  593. <td>u8</td>
  594. <td>00</td>
  595. </tr>
  596. <tr>
  597. <td>file_saved_to_path</td>
  598. <td>bool</td>
  599. <td>00 = the file was not saved at the specified path<br />
  600. 01 = the file was saved</td>
  601. </tr>
  602. <tr>
  603. <td>path_length</td>
  604. <td>uLEB128</td>
  605. <td>Length of the full path (in characters) to the file where the tab content was written</td>
  606. </tr>
  607. <tr>
  608. <td>file_path</td>
  609. <td>UTF-16LE</td>
  610. <td>The full path to the file where the tab content was written</td>
  611. </tr>
  612. <tr>
  613. <td>file_size</td>
  614. <td>uLEB128</td>
  615. <td>The size of the file on disk where the tab content was written</td>
  616. </tr>
  617. <tr>
  618. <td>encoding</td>
  619. <td>u8</td>
  620. <td>File encoding:<br />
  621. 0x01 – ANSI<br />
  622. 0x02 – UTF-16LE<br />
  623. 0x03 – UTF-16BE<br />
  624. 0x04 – UTF-8BOM<br />
  625. 0x05 – UTF-8</td>
  626. </tr>
  627. <tr>
  628. <td>cr_type</td>
  629. <td>u8</td>
  630. <td>Type of carriage return:<br />
  631. 0x01 — CRLF<br />
  632. 0x02 — CR<br />
  633. 0x03 — LF</td>
  634. </tr>
  635. <tr>
  636. <td>last_write_time</td>
  637. <td>uLEB128</td>
  638. <td>The time of the last write (tab save) to the file, formatted as <a href="https://learn.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-filetime?redirectedfrom=MSDN" target="_blank" rel="noopener">FILETIME</a></td>
  639. </tr>
  640. <tr>
  641. <td>sha256_hash</td>
  642. <td>[u8;32]</td>
  643. <td>The SHA-256 hash of the tab content</td>
  644. </tr>
  645. <tr>
  646. <td>?</td>
  647. <td>[u8;2]</td>
  648. <td>00 01</td>
  649. </tr>
  650. <tr>
  651. <td>selection_start</td>
  652. <td>uLEB128</td>
  653. <td>The offset of the section start from the beginning of the file</td>
  654. </tr>
  655. <tr>
  656. <td>selection_end</td>
  657. <td>uLEB128</td>
  658. <td>The offset of the section end from the beginning of the file</td>
  659. </tr>
  660. <tr>
  661. <td>config_block</td>
  662. <td>ConfigBlock</td>
  663. <td>ConfigBlock structure configuration</td>
  664. </tr>
  665. <tr>
  666. <td>content_length</td>
  667. <td>uLEB128</td>
  668. <td>The length of the text in the file</td>
  669. </tr>
  670. <tr>
  671. <td>content</td>
  672. <td>UTF-16LE</td>
  673. <td>The file content before it was modified by the new data. This field is absent if the tab was saved to disk with no subsequent modifications.</td>
  674. </tr>
  675. <tr>
  676. <td>contain_unsaved_data</td>
  677. <td>bool</td>
  678. <td>00 = the tab content in the {GUID}.bin file matches the tab content in the file on disk<br />
  679. 01 = changes to the tab have not been saved to disk</td>
  680. </tr>
  681. <tr>
  682. <td>checksum</td>
  683. <td>[u8;4]</td>
  684. <td>The CRC32 checksum of the {GUID}.bin file content, offset by 0x03 from the start of the file</td>
  685. </tr>
  686. <tr>
  687. <td>unsaved_chunks</td>
  688. <td>[UnsavedChunk]</td>
  689. <td>A list of UnsavedChunk structures. This is absent if the tab was saved to disk with no subsequent modifications</td>
  690. </tr>
  691. </tbody>
  692. </table>
  693. <div id="attachment_117682" style="width: 903px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102005/forensic-artifacts2.jpeg" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117682" class="size-full wp-image-117682" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102005/forensic-artifacts2.jpeg" alt="Example content of the {GUID.bin} file for a Notepad tab that was saved to a file and then modified with new data which was not written to the file" width="893" height="622" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102005/forensic-artifacts2.jpeg 893w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102005/forensic-artifacts2-300x209.jpeg 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102005/forensic-artifacts2-768x535.jpeg 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102005/forensic-artifacts2-502x350.jpeg 502w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102005/forensic-artifacts2-740x515.jpeg 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102005/forensic-artifacts2-402x280.jpeg 402w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102005/forensic-artifacts2-800x557.jpeg 800w" sizes="auto, (max-width: 893px) 100vw, 893px" /></a><p id="caption-attachment-117682" class="wp-caption-text">Example content of the {GUID.bin} file for a Notepad tab that was saved to a file and then modified with new data which was not written to the file</p></div>
  694. <p>For tabs that were never saved, the {GUID}.bin file structure in the TabState directory is shorter:</p>
  695. <table>
  696. <tbody>
  697. <tr>
  698. <td><strong>Field</strong></td>
  699. <td><strong>Type</strong></td>
  700. <td><strong>Value and explanation</strong></td>
  701. </tr>
  702. <tr>
  703. <td>signature</td>
  704. <td>[u8;2]</td>
  705. <td>NP</td>
  706. </tr>
  707. <tr>
  708. <td>?</td>
  709. <td>u8</td>
  710. <td>00</td>
  711. </tr>
  712. <tr>
  713. <td>file_saved_to_path</td>
  714. <td>bool</td>
  715. <td>00 = the file was not saved at the specified path (always)</td>
  716. </tr>
  717. <tr>
  718. <td>selection_start</td>
  719. <td>uLEB128</td>
  720. <td>The offset of the section start from the beginning of the file</td>
  721. </tr>
  722. <tr>
  723. <td>selection_end</td>
  724. <td>uLEB128</td>
  725. <td>The offset of the section end from the beginning of the file</td>
  726. </tr>
  727. <tr>
  728. <td>config_block</td>
  729. <td>ConfigBlock</td>
  730. <td>ConfigBlock structure configuration</td>
  731. </tr>
  732. <tr>
  733. <td>content_length</td>
  734. <td>uLEB128</td>
  735. <td>The length of the text in the file</td>
  736. </tr>
  737. <tr>
  738. <td>content</td>
  739. <td>UTF-16LE</td>
  740. <td>File content</td>
  741. </tr>
  742. <tr>
  743. <td>contain_unsaved_data</td>
  744. <td>bool</td>
  745. <td>01 = changes to the tab have not been saved to disk (always)</td>
  746. </tr>
  747. <tr>
  748. <td>checksum</td>
  749. <td>[u8;4]</td>
  750. <td>The CRC32 checksum of the {GUID}.bin file content, offset by 0x03 from the start of the file</td>
  751. </tr>
  752. <tr>
  753. <td>unsaved_chunks</td>
  754. <td>[UnsavedChunk]</td>
  755. <td>List of UnsavedChunk structures</td>
  756. </tr>
  757. </tbody>
  758. </table>
  759. <div id="attachment_117683" style="width: 1190px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102254/forensic-artifacts3.jpeg" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117683" class="size-full wp-image-117683" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102254/forensic-artifacts3.jpeg" alt="Example content of the {GUID.bin} file for a Notepad tab that has not been saved to a file" width="1180" height="207" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102254/forensic-artifacts3.jpeg 1180w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102254/forensic-artifacts3-300x53.jpeg 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102254/forensic-artifacts3-1024x180.jpeg 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102254/forensic-artifacts3-768x135.jpeg 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102254/forensic-artifacts3-740x130.jpeg 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102254/forensic-artifacts3-800x140.jpeg 800w" sizes="auto, (max-width: 1180px) 100vw, 1180px" /></a><p id="caption-attachment-117683" class="wp-caption-text">Example content of the {GUID.bin} file for a Notepad tab that has not been saved to a file</p></div>
  760. <p>Note that the saving of tabs may be disabled in the Notepad settings. If this is the case, the TabState and WindowState artifacts will be unavailable for analysis.</p>
  761. <p>If these artifacts are available, however, you can use <a href="https://github.com/AbdulRhmanAlfaifi/notepad_parser" target="_blank" rel="noopener">the notepad_parser tool</a>, developed by our colleague Abdulrhman Alfaifi, to automate working with them.</p>
  762. <p>This particular artifact may assist in recovering the contents of malicious scripts and batch files. Furthermore, it may contain the results and logs from network scanners, credential extraction utilities, and other executables used by threat actors, assuming any unsaved modifications were inadvertently made to them.</p>
  763. <h2 id="changes-to-familiar-artifacts-in-windows-11">Changes to familiar artifacts in Windows 11</h2>
  764. <p>In addition to the new artifacts, Windows 11 introduced several noteworthy changes to existing ones that investigators should be aware of when analyzing incidents.</p>
  765. <h3 id="changes-to-ntfs-attribute-behavior">Changes to NTFS attribute behavior</h3>
  766. <p>The behavior of NTFS attributes was changed between Windows 10 and Windows 11 in two $MFT structures: $STANDARD_INFORMATION and $FILE_NAME.</p>
  767. <p>The changes to the behavior of the $STANDARD_INFORMATION attributes are presented in the table below:</p>
  768. <table>
  769. <tbody>
  770. <tr>
  771. <td><strong>Event</strong></td>
  772. <td>Access file</td>
  773. <td>Rename file</td>
  774. <td>Copy file to new folder</td>
  775. <td>Move file within one volume</td>
  776. <td>Move file between volumes</td>
  777. </tr>
  778. <tr>
  779. <td><strong>Win 10<br />
  780. 1903</strong></td>
  781. <td>The File Access timestamp is updated. However, it remains unchanged if the system volume is larger than 128 GB</td>
  782. <td>The File Access timestamp remains unchanged</td>
  783. <td>The copy metadata is updated</td>
  784. <td>The File Access timestamp remains unchanged</td>
  785. <td>The metadata is inherited from the original file</td>
  786. </tr>
  787. <tr>
  788. <td><strong>Win 11 24H2</strong></td>
  789. <td>The File Access timestamp is updated</td>
  790. <td>The File Access timestamp is updated to match the modification time</td>
  791. <td>The copy metadata is inherited from the original file</td>
  792. <td>The File Access timestamp is updated to match the moving time</td>
  793. <td>The metadata is updated</td>
  794. </tr>
  795. </tbody>
  796. </table>
  797. <p>Behavior of the $FILENAME attributes was changed as follows:</p>
  798. <table>
  799. <tbody>
  800. <tr>
  801. <td><strong>Event</strong></td>
  802. <td>Rename file</td>
  803. <td>Move file via Explorer within one volume</td>
  804. <td>Move file to Recycle Bin</td>
  805. </tr>
  806. <tr>
  807. <td><strong>Win 10<br />
  808. 1903</strong></td>
  809. <td>The timestamps and metadata remain unchanged</td>
  810. <td>The timestamps and metadata remain unchanged</td>
  811. <td>The timestamps and metadata remain unchanged</td>
  812. </tr>
  813. <tr>
  814. <td><strong>Win 11 24H2</strong></td>
  815. <td>The File Access and File Modify timestamps along with the metadata are inherited from the previous version of $STANDARD_INFORMATION</td>
  816. <td>The File Access and File Modify timestamps along with the metadata are inherited from the previous version of $STANDARD_INFORMATION</td>
  817. <td>The File Access and File Modify timestamps along with the metadata are inherited from the previous version of $STANDARD_INFORMATION</td>
  818. </tr>
  819. </tbody>
  820. </table>
  821. <p>Analysts should consider these changes when examining the service files of the NTFS file system.</p>
  822. <h3 id="program-compatibility-assistant">Program Compatibility Assistant</h3>
  823. <p>Program Compatibility Assistant (PCA) first appeared way back in 2006 with the release of Windows Vista. Its purpose is to run applications designed for older operating system versions, thus being a relevant artifact for identifying evidence of program execution.</p>
  824. <p>Windows 11 introduced new files associated with this feature that are relevant for forensic analysis of application executions. These files are located in the directory <code>C:\Windows\appcompat\pca\</code>:</p>
  825. <ul>
  826. <li><code>PcaAppLaunchDic.txt</code>: each line in this file contains data on the most recent launch of a specific executable file. This information includes the time of the last launch formatted as YYYY-MM-DD HH:MM:SS.f (UTC) and the full path to the file. A pipe character (|) separates the data elements. When the file is run again, the information in the corresponding line is updated. The file uses ANSI (CP-1252) encoding, so executing files with Unicode in their names &#8220;breaks&#8221; it: new entries (including the entry for running a file with Unicode) stop appearing, only old ones get updated.</li>
  827. </ul>
  828. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102559/forensic-artifacts4.png" class="magnificImage"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-117684" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102559/forensic-artifacts4.png" alt="" width="1007" height="306" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102559/forensic-artifacts4.png 1007w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102559/forensic-artifacts4-300x91.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102559/forensic-artifacts4-768x233.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102559/forensic-artifacts4-740x225.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102559/forensic-artifacts4-921x280.png 921w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102559/forensic-artifacts4-800x243.png 800w" sizes="auto, (max-width: 1007px) 100vw, 1007px" /></a></p>
  829. <ul>
  830. <li><code>PcaGeneralDb0.txt</code> and <code>PcaGeneralDb1.txt</code> alternate during data logging: new records are saved to the primary file until its size reaches two megabytes. Once that limit is reached, the secondary file is cleared and becomes the new primary file, and the full primary file is then designated as the secondary. This cycle repeats indefinitely. The data fields are delimited with a pipe (|). The file uses UTF-16LE encoding and contains the following fields:
  831. <ul>
  832. <li>Executable launch time (YYYY-MM-DD HH:MM:SS.f (UTC))</li>
  833. <li>Record type (0–4):
  834. <ul>
  835. <li>0 = installation error</li>
  836. <li>1 = driver blocked</li>
  837. <li>2 = abnormal process exit</li>
  838. <li>3 = PCA Resolve call (component responsible for fixing compatibility issues when running older programs)</li>
  839. <li>4 = value not set</li>
  840. </ul>
  841. </li>
  842. <li>Path to executable file. This path omits the volume letter and frequently uses environment variables (%USERPROFILE%, %systemroot%, %programfiles%, and others).</li>
  843. <li>Product name (from the PE header, lowercase)</li>
  844. <li>Company name (from the PE header, lowercase)</li>
  845. <li>Product version (from the PE header)</li>
  846. <li>Windows application ID (format matches that used in <a href="https://securelist.com/amcache-forensic-artifact/117622/" target="_blank" rel="noopener">AmCache</a>)</li>
  847. <li>Message</li>
  848. </ul>
  849. </li>
  850. </ul>
  851. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102803/forensic-artifacts5.png" class="magnificImage"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-117685" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102803/forensic-artifacts5.png" alt="" width="2390" height="341" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102803/forensic-artifacts5.png 2390w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102803/forensic-artifacts5-300x43.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102803/forensic-artifacts5-1024x146.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102803/forensic-artifacts5-768x110.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102803/forensic-artifacts5-1536x219.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102803/forensic-artifacts5-2048x292.png 2048w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102803/forensic-artifacts5-740x106.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102803/forensic-artifacts5-1600x228.png 1600w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/10102803/forensic-artifacts5-800x114.png 800w" sizes="auto, (max-width: 2390px) 100vw, 2390px" /></a></p>
  852. <p>Note that these text files only record data related to program launches executed through Windows File Explorer. They do not log launches of executable files initiated from the console.</p>
  853. <h3 id="windows-search">Windows Search</h3>
  854. <p>Windows Search is the built-in indexing and file search mechanism within Windows. Initially, it combed through files directly, resulting in sluggish and inefficient searches. Later, a separate application emerged that created a fast file index. It was not until 2006&#8217;s Windows Vista that a search feature was fully integrated into the operating system, with file indexing moved to a background process.</p>
  855. <p>From Windows Vista up to and including Windows 10, the file index was stored in an Extensible Storage Engine (ESE) database:<br />
  856. <code>%PROGRAMDATA%\Microsoft\Search\Data\Applications\Windows\Windows.edb</code>.</p>
  857. <p>Windows 11 breaks this storage down into three SQLite databases:</p>
  858. <ul>
  859. <li><code>%PROGRAMDATA%\Microsoft\Search\Data\Applications\Windows\Windows-gather.db</code> contains general information about indexed files and folders. The most interesting element is the SystemIndex_Gthr table, which stores data such as the name of the indexed file or directory (FileName column), the last modification of the indexed file or directory (LastModified), an identifier used to link to the parent object (ScopeID), and a unique identifier for the file or directory itself (DocumentID). Using the ScopeID and the SystemIndex_GthrPth table, investigators can reconstruct the full path to a file on the system. The SystemIndex_GthrPth table contains the folder name (Name column), the directory identifier (Scope), and the parent directory identifier (Parent). By matching the file&#8217;s ScopeID with the directory&#8217;s Scope, one can determine the parent directory of the file.</li>
  860. <li><code>%PROGRAMDATA%\Microsoft\Search\Data\Applications\Windows\Windows.db</code> stores information about the metadata of indexed files. The SystemIndex_1_PropertyStore table is of interest for analysis; it holds the unique identifier of the indexed object (WorkId column), the metadata type (ColumnId), and the metadata itself. Metadata types are described in the SystemIndex_1_PropertyStore_Metadata table (where the content of the Id column corresponds to the ColumnId content from SystemIndex_1_PropertyStore) and are specified in the UniqueKey column.</li>
  861. <li><code>%PROGRAMDATA%\Microsoft\Search\Data\Applications\Windows\Windows-usn.db</code> does not contain useful information for forensic analysis.</li>
  862. </ul>
  863. <p>As depicted in the image below, analyzing the <code>Windows-gather.db</code> file using DB Browser for SQLite can provide us evidence of the presence of certain files (e.g., malware files, configuration files, files created and left by attackers, and others).<br />
  864. <a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14064945/forensic-artifacts-6.png" class="magnificImage"><img loading="lazy" decoding="async" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14064945/forensic-artifacts-6.png" alt="" width="1234" height="667" class="aligncenter size-full wp-image-117735" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14064945/forensic-artifacts-6.png 1234w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14064945/forensic-artifacts-6-300x162.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14064945/forensic-artifacts-6-1024x553.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14064945/forensic-artifacts-6-768x415.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14064945/forensic-artifacts-6-648x350.png 648w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14064945/forensic-artifacts-6-740x400.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14064945/forensic-artifacts-6-518x280.png 518w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14064945/forensic-artifacts-6-800x432.png 800w" sizes="auto, (max-width: 1234px) 100vw, 1234px" /></a><br />
  865. It is worth noting that the LastModified column is stored in the Windows FILETIME format, which holds an unsigned 64-bit date and time value, representing the number of 100-nanosecond units since the start of January 1, 1601. Using a utility such as DCode, we can see this value in UTC, as shown in the image below.<br />
  866. <a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14064958/forensic-artifacts-7.png" class="magnificImage"><img loading="lazy" decoding="async" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14064958/forensic-artifacts-7.png" alt="" width="1062" height="434" class="aligncenter size-full wp-image-117736" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14064958/forensic-artifacts-7.png 1062w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14064958/forensic-artifacts-7-300x123.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14064958/forensic-artifacts-7-1024x418.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14064958/forensic-artifacts-7-768x314.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14064958/forensic-artifacts-7-856x350.png 856w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14064958/forensic-artifacts-7-740x302.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14064958/forensic-artifacts-7-685x280.png 685w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14064958/forensic-artifacts-7-800x327.png 800w" sizes="auto, (max-width: 1062px) 100vw, 1062px" /></a></p>
  867. <h3 id="other-minor-changes-in-windows-11">Other minor changes in Windows 11</h3>
  868. <p>It is also worth mentioning a few small but important changes in Windows 11 that do not require a detailed analysis:</p>
  869. <ul>
  870. <li>A complete discontinuation of NTLMv1 means that pass-the-hash attacks are gradually becoming a thing of the past.</li>
  871. <li>Removal of the well-known Windows 10 Timeline activity artifact. Although it is no longer being actively maintained, its database remains for now in the files containing user activity information, located at: <code>%userprofile%\AppData\Local\ConnectedDevicesPlatform\ActivitiesCache.db</code>.</li>
  872. <li>Similarly, Windows 11 removed Cortana and Internet Explorer, but the artifacts of these can still be found in the operating system. This may be useful for investigations conducted in machines that were updated from Windows 10 to the newer version.</li>
  873. <li><a href="https://github.com/AndrewRathbun/Windows11Research/tree/main/EventLogs/4624" target="_blank">Previous research</a> also showed that Event ID 4624, which logs successful logon attempts in Windows, remained largely consistent across versions until a notable update appeared in Windows 11 Pro (22H2). This version introduces a new field, called Remote Credential Guard, marking a subtle but potentially important change in forensic analysis. While its real-world use and forensic significance remain to be observed, its presence suggests Microsoft&#8217;s ongoing efforts to enhance authentication-related telemetry.</li>
  874. <li>Expanded support for the ReFS file system. The latest Windows 11 update preview made it possible to install the operating system directly onto a ReFS volume, and BitLocker support was also introduced. This file system has several key differences from the familiar NTFS:
  875. <ul>
  876. <li>ReFS does not have the $MFT (Master File Table) that forensics specialists rely on, which contains all current file records on the disk.</li>
  877. <li>It does not generate short file names, as NTFS does for DOS compatibility.</li>
  878. <li>It does not support hard links or extended object attributes.</li>
  879. <li>It offers increased maximum volume and single-file sizes (35 PB compared to 256 TB in NTFS).</li>
  880. </ul>
  881. </li>
  882. </ul>
  883. <h2 id="conclusion">Conclusion</h2>
  884. <p>This post provided a brief overview of key changes to Windows 11 artifacts that are relevant to forensic analysis – most notably, the changes of PCA and modifications to Windows Search mechanism. The ultimate utility of these artifacts in investigations remains to be seen. Nevertheless, we recommend you immediately incorporate the aforementioned files into the scope of your triage collection tool.</p>
  885. ]]></content:encoded>
  886. <wfw:commentRss>https://securelist.com/forensic-artifacts-in-windows-11/117680/feed/</wfw:commentRss>
  887. <slash:comments>0</slash:comments>
  888. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13154941/SL-forensic-artifacts-in-windows-11-featured.jpg" width="2000" height="1000"><media:keywords>full</media:keywords></media:content>
  889. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13154941/SL-forensic-artifacts-in-windows-11-featured-1024x512.jpg" width="1024" height="512"><media:keywords>large</media:keywords></media:content>
  890. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13154941/SL-forensic-artifacts-in-windows-11-featured-300x150.jpg" width="300" height="150"><media:keywords>medium</media:keywords></media:content>
  891. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13154941/SL-forensic-artifacts-in-windows-11-featured-150x150.jpg" width="150" height="150"><media:keywords>thumbnail</media:keywords></media:content>
  892. </item>
  893. <item>
  894. <title>How we trained an ML model to detect DLL hijacking</title>
  895. <link>https://securelist.com/building-ml-model-to-detect-dll-hijacking/117565/</link>
  896. <comments>https://securelist.com/building-ml-model-to-detect-dll-hijacking/117565/#respond</comments>
  897. <dc:creator><![CDATA[Anna Pidzhakova]]></dc:creator>
  898. <pubDate>Mon, 06 Oct 2025 08:00:21 +0000</pubDate>
  899. <category><![CDATA[Research]]></category>
  900. <category><![CDATA[Security technology]]></category>
  901. <category><![CDATA[Machine learning]]></category>
  902. <category><![CDATA[DLL hijacking]]></category>
  903. <category><![CDATA[Threat hunting]]></category>
  904. <category><![CDATA[Artificial intelligence]]></category>
  905. <category><![CDATA[DLL]]></category>
  906. <category><![CDATA[Cybersecurity]]></category>
  907. <guid isPermaLink="false">https://kasperskycontenthub.com/securelist/?p=117565</guid>
  908.  
  909. <description><![CDATA[An expert at the Kaspersky AI expertise center explains how the team developed a machine-learning model to identify DLL hijacking attacks.]]></description>
  910. <content:encoded><![CDATA[<p><img width="990" height="400" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30133010/SL-ML-model-training-featured-990x400.jpg" class="attachment-securelist-huge-promo size-securelist-huge-promo wp-post-image" alt="" decoding="async" loading="lazy" /></p><p>DLL hijacking is a common technique in which attackers replace a library called by a legitimate process with a malicious one. It is used by both creators of mass-impact malware, like stealers and banking Trojans, and by APT and cybercrime groups behind targeted attacks. In recent years, the number of DLL hijacking attacks has grown significantly.</p>
  911. <div class="js-infogram-embed" data-id="_/re1cVhfDkiTvQdIHwndC" data-type="interactive" data-title="01(2)_EN_RU_ES_PT-BR_DLL Hijacking charts" style="min-height:;"></div>
  912. <p style="text-align: center;font-style: italic;font-weight: bold;margin-top: -10px"><em>Trend in the number of DLL hijacking attacks. 2023 data is taken as 100% (<a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/02132719/012en_ru_es_pt-br_dll-hijacking-charts.png" target="_blank" rel="noopener">download</a>)</em></p>
  913. <p>We have observed this technique and its variations, like DLL sideloading, in targeted attacks on organizations in <a href="https://securelist.com/cobalt-strike-attacks-using-quora-github-social-media/117085/" target="_blank" rel="noopener">Russia</a>, <a href="https://securelist.com/apt41-in-africa/116986/" target="_blank" rel="noopener">Africa</a>, <a href="https://securelist.com/operation-synchole-watering-hole-attacks-by-lazarus/116326/" target="_blank" rel="noopener">South Korea</a>, and other countries and regions. <a href="https://securelist.com/lumma-fake-captcha-attacks-analysis/116274/" target="_blank" rel="noopener">Lumma</a>, one of 2025&#8217;s most active stealers, uses this method for distribution. Threat actors trying to profit from popular applications, such as DeepSeek, also <a href="https://securelist.com/backdoors-and-stealers-prey-on-deepseek-and-grok/115801/#scheme-3-backdoors-and-attacks-on-chinese-users" target="_blank" rel="noopener">resort</a> to DLL hijacking.</p>
  914. <p>Detecting a DLL substitution attack is not easy because the library executes within the trusted address space of a legitimate process. So, to a security solution, this activity may look like a trusted process. Directing excessive attention to trusted processes can compromise overall system performance, so you have to strike a delicate balance between a sufficient level of security and sufficient convenience.</p>
  915. <h2 id="detecting-dll-hijacking-with-a-machine-learning-model">Detecting DLL hijacking with a machine-learning model</h2>
  916. <p>Artificial intelligence can help where simple detection algorithms fall short. Kaspersky has been using machine learning for 20 years to identify malicious activity at various stages. The AI expertise center researches the capabilities of different models in threat detection, then trains and implements them. Our colleagues at the threat intelligence center approached us with a question of whether machine learning could be used to detect DLL hijacking, and more importantly, whether it would help improve detection accuracy.</p>
  917. <h3 id="preparation">Preparation</h3>
  918. <p>To determine if we could train a model to distinguish between malicious and legitimate library loads, we first needed to define a set of features highly indicative of DLL hijacking. We identified the following key features:</p>
  919. <ul>
  920. <li><strong>Wrong library location.</strong> Many standard libraries reside in standard directories, while a malicious DLL is often found in an unusual location, such as the same folder as the executable that calls it.</li>
  921. <li><strong>Wrong executable location.</strong> Attackers often save executables in non-standard paths, like temporary directories or user folders, instead of %Program Files%.</li>
  922. <li><strong>Renamed executable.</strong> To avoid detection, attackers frequently save legitimate applications under arbitrary names.</li>
  923. <li><strong>Library size has changed, and it is no longer signed.</strong></li>
  924. <li><strong>Modified library structure.</strong></li>
  925. </ul>
  926. <h3 id="training-sample-and-labeling">Training sample and labeling</h3>
  927. <p>For the training sample, we used dynamic library load data provided by our internal automatic processing systems, which handle millions of files every day, and anonymized telemetry, such as that voluntarily provided by Kaspersky users through Kaspersky Security Network.</p>
  928. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220803/dll-hijackingEN2.png" class="magnificImage"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-117583" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220803/dll-hijackingEN2.png" alt="" width="644" height="470" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220803/dll-hijackingEN2.png 644w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220803/dll-hijackingEN2-300x219.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220803/dll-hijackingEN2-480x350.png 480w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220803/dll-hijackingEN2-384x280.png 384w" sizes="auto, (max-width: 644px) 100vw, 644px" /></a></p>
  929. <p>The training sample was labeled in three iterations. Initially, we could not automatically pull event labeling from our analysts that indicated whether an event was a DLL hijacking attack. So, we used data from our databases containing only file reputation, and labeled the rest of the data manually. We labeled as DLL hijacking those library-call events where the process was definitively legitimate but the DLL was definitively malicious. However, this labeling was not enough because some processes, like &#8220;svchost&#8221;, are designed mainly to load various libraries. As a result, the model we trained on this data had a high rate of false positives and was not practical for real-world use.</p>
  930. <p>In the next iteration, we additionally filtered malicious libraries by family, keeping only those which were known to exhibit DLL-hijacking behavior. The model trained on this refined data showed significantly better accuracy and essentially confirmed our hypothesis that we could use machine learning to detect this type of attacks.</p>
  931. <p>At this stage, our training dataset had tens of millions of objects. This included about 20 million clean files and around 50,000 definitively malicious ones.</p>
  932. <table>
  933. <tbody>
  934. <tr>
  935. <td><strong>Status</strong></td>
  936. <td><strong>Total</strong></td>
  937. <td><strong>Unique files</strong></td>
  938. </tr>
  939. <tr>
  940. <td>Unknown</td>
  941. <td>~ 18M</td>
  942. <td>~ 6M</td>
  943. </tr>
  944. <tr>
  945. <td>Malicious</td>
  946. <td>~ 50K</td>
  947. <td>~ 1,000</td>
  948. </tr>
  949. <tr>
  950. <td>Clean</td>
  951. <td>~ 20M</td>
  952. <td>~ 250K</td>
  953. </tr>
  954. </tbody>
  955. </table>
  956. <p>We then trained subsequent models on the results of their predecessors, which had been verified and further labeled by analysts. This process significantly increased the efficiency of our training.</p>
  957. <h2 id="loading-dlls-what-does-normal-look-like">Loading DLLs: what does normal look like?</h2>
  958. <p>So, we had a labeled sample with a large number of library loading events from various processes. How can we describe a &#8220;clean&#8221; library? Using a process name + library name combination does not account for renamed processes. Besides, a legitimate user, not just an attacker, can rename a process. If we used the process hash instead of the name, we would solve the renaming problem, but then every version of the same library would be treated as a separate library. We ultimately settled on using a library name + process signature combination. While this approach considers all identically named libraries from a single vendor as one, it generally produces a more or less realistic picture.</p>
  959. <p>To describe safe library loading events, we used a set of counters that included information about the processes (the frequency of a specific process name for a file with a given hash, the frequency of a specific file path for a file with that hash, and so on), information about the libraries (the frequency of a specific path for that library, the percentage of legitimate launches, and so on), and event properties (that is, whether the library is in the same directory as the file that calls it).</p>
  960. <p>The result was a system with multiple aggregates (sets of counters and keys) that could describe an input event. These aggregates can contain a single key (e.g., a DLL&#8217;s hash sum) or multiple keys (e.g., a process&#8217;s hash sum + process signature). Based on these aggregates, we can derive a set of features that describe the library loading event. The diagram below provides examples of how these features are derived:</p>
  961. <div id="attachment_117584" style="width: 1468px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220906/dll-hijackingEN3.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117584" class="size-full wp-image-117584" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220906/dll-hijackingEN3.png" alt="Feature extraction from aggregates" width="1458" height="546" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220906/dll-hijackingEN3.png 1458w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220906/dll-hijackingEN3-300x112.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220906/dll-hijackingEN3-1024x383.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220906/dll-hijackingEN3-768x288.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220906/dll-hijackingEN3-935x350.png 935w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220906/dll-hijackingEN3-740x277.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220906/dll-hijackingEN3-748x280.png 748w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220906/dll-hijackingEN3-800x300.png 800w" sizes="auto, (max-width: 1458px) 100vw, 1458px" /></a><p id="caption-attachment-117584" class="wp-caption-text">Feature extraction from aggregates</p></div>
  962. <h2 id="loading-dlls-how-to-describe-hijacking">Loading DLLs: how to describe hijacking</h2>
  963. <p>Certain feature combinations (dependencies) strongly indicate DLL hijacking. These can be simple dependencies. For some processes, the clean library they call always resides in a separate folder, while the malicious one is most often placed in the process folder.</p>
  964. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220953/dll-hijackingEN4.png" class="magnificImage"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-117585" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220953/dll-hijackingEN4.png" alt="" width="1264" height="278" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220953/dll-hijackingEN4.png 1264w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220953/dll-hijackingEN4-300x66.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220953/dll-hijackingEN4-1024x225.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220953/dll-hijackingEN4-768x169.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220953/dll-hijackingEN4-740x163.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28220953/dll-hijackingEN4-800x176.png 800w" sizes="auto, (max-width: 1264px) 100vw, 1264px" /></a></p>
  965. <p>Other dependencies can be more complex and require several conditions to be met. For example, a process renaming itself does not, on its own, indicate DLL hijacking. However, if the new name appears in the data stream for the first time, and the library is located on a non-standard path, it is highly likely to be malicious.</p>
  966. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221027/dll-hijackingEN5.png" class="magnificImage"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-117586" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221027/dll-hijackingEN5.png" alt="" width="1264" height="452" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221027/dll-hijackingEN5.png 1264w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221027/dll-hijackingEN5-300x107.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221027/dll-hijackingEN5-1024x366.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221027/dll-hijackingEN5-768x275.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221027/dll-hijackingEN5-979x350.png 979w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221027/dll-hijackingEN5-740x265.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221027/dll-hijackingEN5-783x280.png 783w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221027/dll-hijackingEN5-800x286.png 800w" sizes="auto, (max-width: 1264px) 100vw, 1264px" /></a></p>
  967. <h2 id="model-evolution">Model evolution</h2>
  968. <p>Within this project, we trained several generations of models. The primary goal of the first generation was to show that machine learning could at all be applied to detecting DLL hijacking. When training this model, we used the broadest possible interpretation of the term.</p>
  969. <p>The model&#8217;s workflow was as simple as possible:</p>
  970. <ol>
  971. <li>We took a data stream and extracted a frequency description for selected sets of keys.</li>
  972. <li>We took the same data stream from a different time period and obtained a set of features.</li>
  973. <li>We used type 1 labeling, where events in which a legitimate process loaded a malicious library from a specified set of families were marked as DLL hijacking.</li>
  974. <li>We trained the model on the resulting data.</li>
  975. </ol>
  976. <div id="attachment_117587" style="width: 654px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221117/dll-hijackingEN6.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117587" class="size-full wp-image-117587" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221117/dll-hijackingEN6.png" alt="First-generation model diagram" width="644" height="470" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221117/dll-hijackingEN6.png 644w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221117/dll-hijackingEN6-300x219.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221117/dll-hijackingEN6-480x350.png 480w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221117/dll-hijackingEN6-384x280.png 384w" sizes="auto, (max-width: 644px) 100vw, 644px" /></a><p id="caption-attachment-117587" class="wp-caption-text">First-generation model diagram</p></div>
  977. <p>The second-generation model was trained on data that had been processed by the first-generation model and verified by analysts (labeling type 2). Consequently, the labeling was more precise than during the training of the first model. Additionally, we added more features to describe the library structure and slightly complicated the workflow for describing library loads.</p>
  978. <div id="attachment_117588" style="width: 654px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221153/dll-hijackingEN7.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117588" class="size-full wp-image-117588" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221153/dll-hijackingEN7.png" alt="Second-generation model diagram" width="644" height="470" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221153/dll-hijackingEN7.png 644w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221153/dll-hijackingEN7-300x219.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221153/dll-hijackingEN7-480x350.png 480w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221153/dll-hijackingEN7-384x280.png 384w" sizes="auto, (max-width: 644px) 100vw, 644px" /></a><p id="caption-attachment-117588" class="wp-caption-text">Second-generation model diagram</p></div>
  979. <p>Based on the results from this second-generation model, we were able to identify several common types of false positives. For example, the training sample included potentially unwanted applications. These can, in certain contexts, exhibit behavior similar to DLL hijacking, but they are not malicious and rarely belong to this attack type.</p>
  980. <p>We fixed these errors in the third-generation model. First, with the help of analysts, we flagged the potentially unwanted applications in the training sample so the model would not detect them. Second, in this new version, we used an expanded labeling that included useful detections from both the first and second generations. Additionally, we expanded the feature description through one-hot encoding — a technique for converting categorical features into a binary format — for certain fields. Also, since the volume of events processed by the model increased over time, this version added normalization of all features based on the data flow size.</p>
  981. <div id="attachment_117589" style="width: 654px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221236/dll-hijackingEN8.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117589" class="size-full wp-image-117589" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221236/dll-hijackingEN8.png" alt="Third-generation model diagram" width="644" height="470" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221236/dll-hijackingEN8.png 644w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221236/dll-hijackingEN8-300x219.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221236/dll-hijackingEN8-480x350.png 480w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221236/dll-hijackingEN8-384x280.png 384w" sizes="auto, (max-width: 644px) 100vw, 644px" /></a><p id="caption-attachment-117589" class="wp-caption-text">Third-generation model diagram</p></div>
  982. <h2 id="comparison-of-the-models">Comparison of the models</h2>
  983. <p>To evaluate the evolution of our models, we applied them to a test data set none of them had worked with before. The graph below shows the ratio of true positive to false positive verdicts for each model.</p>
  984. <div id="attachment_117590" style="width: 1639px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221323/dll-hijackingEN9.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117590" class="size-full wp-image-117590" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221323/dll-hijackingEN9.png" alt="Trends in true positives and false positives from the first-, second-, and third-generation models" width="1629" height="664" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221323/dll-hijackingEN9.png 1629w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221323/dll-hijackingEN9-300x122.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221323/dll-hijackingEN9-1024x417.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221323/dll-hijackingEN9-768x313.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221323/dll-hijackingEN9-1536x626.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221323/dll-hijackingEN9-859x350.png 859w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221323/dll-hijackingEN9-740x302.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221323/dll-hijackingEN9-687x280.png 687w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/28221323/dll-hijackingEN9-800x326.png 800w" sizes="auto, (max-width: 1629px) 100vw, 1629px" /></a><p id="caption-attachment-117590" class="wp-caption-text">Trends in true positives and false positives from the first-, second-, and third-generation models</p></div>
  985. <p>As the models evolved, the percentage of true positives grew. While the first-generation model achieved a relatively good result (0.6 or higher) only with a very high false positive rate (10<sup>⁻³</sup> or more), the second-generation model reached this at 10<sup>⁻⁵</sup>. The third-generation model, at the same low false positive rate, produced 0.8 true positives, which is considered a good result.</p>
  986. <p>Evaluating the models on the data stream at a fixed score shows that the absolute number of new events labeled as DLL Hijacking increased from one generation to the next. That said, evaluating the models by their false verdict rate also helps track progress: the first model has a fairly high error rate, while the second and third generations have significantly lower ones.</p>
  987. <div class="js-infogram-embed" data-id="_/OWgUgOWv4ByEQ85H3Kvx" data-type="interactive" data-title="03-EN-DLL Hijacking charts" style="min-height:;"></div>
  988. <p style="text-align: center;font-style: italic;font-weight: bold;margin-top: -10px"><em>False positives rate among model outputs, July 2024 – August 2025 (<a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/02095204/03-en-dll-hijacking-charts-1.png" target="_blank" rel="noopener">download</a>)</em></p>
  989. <h2 id="practical-application-of-the-models">Practical application of the models</h2>
  990. <p>All three model generations are used in our internal systems to detect likely cases of DLL hijacking within telemetry data streams. We receive 6.5 million security events daily, linked to 800,000 unique files. Aggregates are built from this sample at a specified interval, enriched, and then fed into the models. The output data is then ranked by model and by the probability of DLL hijacking assigned to the event, and then sent to our analysts. For instance, if the third-generation model flags an event as DLL hijacking with high confidence, it should be investigated first, whereas a less definitive verdict from the first-generation model can be checked last.</p>
  991. <p>Simultaneously, the models are tested on a separate data stream they have not seen before. This is done to assess their effectiveness over time, as a model&#8217;s detection performance can degrade. The graph below shows that the percentage of correct detections varies slightly over time, but on average, the models detect 70–80% of DLL hijacking cases.</p>
  992. <div class="js-infogram-embed" data-id="_/x8oClVXPCh0H7k2VhVBA" data-type="interactive" data-title="04-EN-DLL Hijacking charts" style="min-height:;"></div>
  993. <p style="text-align: center;font-style: italic;font-weight: bold;margin-top: -10px"><em>DLL hijacking detection trends for all three models, October 2024 – September 2025 (<a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/02095150/04-en-dll-hijacking-charts-1.png" target="_blank" rel="noopener">download</a>)</em></p>
  994. <p>Additionally, we recently deployed a DLL hijacking detection model into the <a href="https://www.kaspersky.com/enterprise-security/unified-monitoring-and-analysis-platform?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______e9dd8a9973100725" target="_blank" rel="noopener">Kaspersky SIEM</a>, but first we tested the model in the <a href="https://www.kaspersky.com/enterprise-security/managed-detection-and-response?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team___kmdr____8449ede27504ec48" target="_blank" rel="noopener">Kaspersky MDR</a> service. During the pilot phase, the model helped to detect and prevent a number of DLL hijacking incidents in our clients&#8217; systems. We have written <a href="https://securelist.com/detecting-dll-hijacking-with-machine-learning-in-kaspersky-siem/117567/" target="_blank" rel="noopener">a separate article</a> about how the machine learning model for detecting targeted attacks involving DLL hijacking works in Kaspersky SIEM and the incidents it has identified.</p>
  995. <h2 id="conclusion">Conclusion</h2>
  996. <p>Based on the training and application of the three generations of models, the experiment to detect DLL hijacking using machine learning was a success. We were able to develop a model that distinguishes events resembling DLL hijacking from other events, and refined it to a state suitable for practical use, not only in our internal systems but also in commercial products. Currently, the models operate in the cloud, scanning hundreds of thousands of unique files per month and detecting thousands of files used in DLL hijacking attacks each month. They regularly identify previously unknown variations of these attacks. The results from the models are sent to analysts who verify them and create new detection rules based on their findings.</p>
  997. ]]></content:encoded>
  998. <wfw:commentRss>https://securelist.com/building-ml-model-to-detect-dll-hijacking/117565/feed/</wfw:commentRss>
  999. <slash:comments>0</slash:comments>
  1000. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30133010/SL-ML-model-training-featured.jpg" width="2000" height="1000"><media:keywords>full</media:keywords></media:content>
  1001. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30133010/SL-ML-model-training-featured-1024x512.jpg" width="1024" height="512"><media:keywords>large</media:keywords></media:content>
  1002. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30133010/SL-ML-model-training-featured-300x150.jpg" width="300" height="150"><media:keywords>medium</media:keywords></media:content>
  1003. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30133010/SL-ML-model-training-featured-150x150.jpg" width="150" height="150"><media:keywords>thumbnail</media:keywords></media:content>
  1004. </item>
  1005. <item>
  1006. <title>Detecting DLL hijacking with machine learning: real-world cases</title>
  1007. <link>https://securelist.com/detecting-dll-hijacking-with-machine-learning-in-kaspersky-siem/117567/</link>
  1008. <comments>https://securelist.com/detecting-dll-hijacking-with-machine-learning-in-kaspersky-siem/117567/#respond</comments>
  1009. <dc:creator><![CDATA[Gleb Ivanov, Andrey Gunkin]]></dc:creator>
  1010. <pubDate>Mon, 06 Oct 2025 08:00:08 +0000</pubDate>
  1011. <category><![CDATA[Security technologies]]></category>
  1012. <category><![CDATA[Security technology]]></category>
  1013. <category><![CDATA[Machine learning]]></category>
  1014. <category><![CDATA[DLL hijacking]]></category>
  1015. <category><![CDATA[Threat hunting]]></category>
  1016. <category><![CDATA[DLL sideloading]]></category>
  1017. <category><![CDATA[Cybersecurity]]></category>
  1018. <category><![CDATA[Artificial intelligence]]></category>
  1019. <category><![CDATA[DLL]]></category>
  1020. <category><![CDATA[SIEM]]></category>
  1021. <category><![CDATA[Cybersecurity]]></category>
  1022. <guid isPermaLink="false">https://kasperskycontenthub.com/securelist/?p=117567</guid>
  1023.  
  1024. <description><![CDATA[We will tell you how we integrated a DLL Hijacking detection model into the Kaspersky SIEM platform and how it helped us uncover several incidents in their early stages.]]></description>
  1025. <content:encoded><![CDATA[<p><img width="990" height="400" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30120509/SL-DLL-Hicjacking-detection-featured-990x400.jpg" class="attachment-securelist-huge-promo size-securelist-huge-promo wp-post-image" alt="" decoding="async" loading="lazy" /></p><h2 id="introduction">Introduction</h2>
  1026. <p>Our colleagues from the AI expertise center recently developed a machine-learning model that detects DLL-hijacking attacks. We then integrated this model into the <a href="https://www.kaspersky.com/enterprise-security/unified-monitoring-and-analysis-platform?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______e9dd8a9973100725" target="_blank" rel="noopener">Kaspersky Unified Monitoring and Analysis Platform</a> SIEM system. In <a href="https://securelist.com/building-ml-model-to-detect-dll-hijacking/117565/" target="_blank" rel="noopener">a separate article</a>, our colleagues shared how the model had been created and what success they had achieved in lab environments. Here, we focus on how it operates within Kaspersky SIEM, the preparation steps taken before its release, and some real-world incidents it has already helped us uncover.</p>
  1027. <h2 id="how-the-model-works-in-kaspersky-siem">How the model works in Kaspersky SIEM</h2>
  1028. <p>The model&#8217;s operation generally boils down to a step-by-step check of all DLL libraries loaded by processes in the system, followed by validation in the Kaspersky Security Network (KSN) cloud. This approach allows local attributes (path, process name, and file hashes) to be combined with a global knowledge base and behavioral indicators, which significantly improves detection quality and reduces the probability of false positives.</p>
  1029. <p>The model can run in one of two modes: on a correlator or on a collector. A correlator is a SIEM component that performs event analysis and correlation based on predefined rules or algorithms. If detection is configured on a correlator, the model checks events that have already triggered a rule. This reduces the volume of KSN queries and the model&#8217;s response time.</p>
  1030. <p>This is how it looks:</p>
  1031. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220337/detecting-dll-hijackingEN2.png" class="magnificImage"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-117570" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220337/detecting-dll-hijackingEN2.png" alt="" width="984" height="395" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220337/detecting-dll-hijackingEN2.png 984w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220337/detecting-dll-hijackingEN2-300x120.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220337/detecting-dll-hijackingEN2-768x308.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220337/detecting-dll-hijackingEN2-872x350.png 872w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220337/detecting-dll-hijackingEN2-740x297.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220337/detecting-dll-hijackingEN2-698x280.png 698w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220337/detecting-dll-hijackingEN2-800x321.png 800w" sizes="auto, (max-width: 984px) 100vw, 984px" /></a></p>
  1032. <p>A collector is a software or hardware component of a SIEM platform that collects and normalizes events from various sources, and then delivers these events to the platform&#8217;s core. If detection is configured on a collector, the model processes all events associated with various processes loading libraries, provided these events meet the following conditions:</p>
  1033. <ul>
  1034. <li>The path to the process file is known.</li>
  1035. <li>The path to the library is known.</li>
  1036. <li>The hashes of the file and the library are available.</li>
  1037. </ul>
  1038. <p>This method consumes more resources, and the model&#8217;s response takes longer than it does on a correlator. However, it can be useful for retrospective threat hunting because it allows you to check all events logged by Kaspersky SIEM. The model&#8217;s workflow on a collector looks like this:</p>
  1039. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220444/detecting-dll-hijackingEN4.png" class="magnificImage"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-117572" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220444/detecting-dll-hijackingEN4.png" alt="" width="984" height="366" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220444/detecting-dll-hijackingEN4.png 984w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220444/detecting-dll-hijackingEN4-300x112.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220444/detecting-dll-hijackingEN4-768x286.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220444/detecting-dll-hijackingEN4-941x350.png 941w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220444/detecting-dll-hijackingEN4-740x275.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220444/detecting-dll-hijackingEN4-753x280.png 753w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220444/detecting-dll-hijackingEN4-800x298.png 800w" sizes="auto, (max-width: 984px) 100vw, 984px" /></a></p>
  1040. <p>It is important to note that the model is not limited to a binary &#8220;malicious/non-malicious&#8221; assessment; it ranks its responses by confidence level. This allows it to be used as a flexible tool in SOC practice. Examples of possible verdicts:</p>
  1041. <ul>
  1042. <li>0: data is being processed.</li>
  1043. <li>1: maliciousness not confirmed. This means the model currently does not consider the library malicious.</li>
  1044. <li>2: suspicious library.</li>
  1045. <li>3: maliciousness confirmed.</li>
  1046. </ul>
  1047. <p>A Kaspersky SIEM rule for detecting DLL hijacking would look like this:</p><pre class="urvanov-syntax-highlighter-plain-tag">N.KL_AI_DLLHijackingCheckResult &gt; 1</pre><p>
  1048. Embedding the model into the Kaspersky SIEM correlator automates the process of finding DLL-hijacking attacks, making it possible to detect them at scale without having to manually analyze hundreds or thousands of loaded libraries. Furthermore, when combined with correlation rules and telemetry sources, the model can be used not just as a standalone module but as part of a comprehensive defense against infrastructure attacks.</p>
  1049. <h2 id="incidents-detected-during-the-pilot-testing-of-the-model-in-the-mdr-service">Incidents detected during the pilot testing of the model in the MDR service</h2>
  1050. <p>Before being released, the model (as part of the Kaspersky SIEM platform) was tested in the <a href="https://www.kaspersky.com/enterprise-security/managed-detection-and-response?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team___kmdr____8449ede27504ec48" target="_blank" rel="noopener">MDR</a> service, where it was trained to identify attacks on large datasets supplied by our telemetry. This step was necessary to ensure that detection works not only in lab settings but also in real client infrastructures.</p>
  1051. <p>During the pilot testing, we verified the model&#8217;s resilience to false positives and its ability to correctly classify behavior even in non-typical DLL-loading scenarios. As a result, several real-world incidents were successfully detected where attackers used one type of DLL hijacking — the DLL Sideloading technique — to gain persistence and execute their code in the system.</p>
  1052. <p>Let us take a closer look at the three most interesting of these.</p>
  1053. <h3 id="incident-1-toddycat-trying-to-launch-cobalt-strike-disguised-as-a-system-library">Incident 1. ToddyCat trying to launch Cobalt Strike disguised as a system library</h3>
  1054. <p>In one incident, the attackers successfully leveraged the vulnerability <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-27076" target="_blank" rel="noopener">CVE-2021-27076</a> to exploit a SharePoint service that used IIS as a web server. They ran the following command:</p><pre class="urvanov-syntax-highlighter-plain-tag">c:\windows\system32\inetsrv\w3wp.exe -ap "SharePoint - 80" -v "v4.0" -l "webengine4.dll" -a \\.\pipe\iisipmd32ded38-e45b-423f-804d-34471928538b -h "C:\inetpub\temp\apppools\SharePoint - 80\SharePoint - 80.config" -w "" -m 0</pre><p>
  1055. After the exploitation, the IIS process created files that were later used to run malicious code via the DLL sideloading technique (<a href="https://attack.mitre.org/techniques/T1574/001/" target="_blank" rel="noopener">T1574.001 Hijack Execution Flow:</a><a href="https://attack.mitre.org/techniques/T1574/001/" target="_blank" rel="noopener"> DLL</a>):</p><pre class="urvanov-syntax-highlighter-plain-tag">C:\ProgramData\SystemSettings.exe
  1056. C:\ProgramData\SystemSettings.dll</pre><p>
  1057. SystemSettings.dll is the name of a library associated with the Windows Settings application (SystemSettings.exe). The original library contains code and data that the Settings application uses to manage and configure various system parameters. However, the library created by the attackers has malicious functionality and is only pretending to be a system library.</p>
  1058. <p>Later, to establish persistence in the system and launch a DLL sideloading attack, a scheduled task was created, disguised as a Microsoft Edge browser update. It launches a SystemSettings.exe file, which is located in the same directory as the malicious library:</p><pre class="urvanov-syntax-highlighter-plain-tag">Schtasks  /create  /ru "SYSTEM" /tn "\Microsoft\Windows\Edge\Edgeupdates" /sc DAILY /tr "C:\ProgramData\SystemSettings.exe" /F</pre><p>
  1059. The task is set to run daily.</p>
  1060. <p>When the SystemSettings.exe process is launched, it loads the malicious DLL. As this happened, the process and library data were sent to our model for analysis and detection of a potential attack.</p>
  1061. <div id="attachment_117573" style="width: 693px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220709/detecting-dll-hijacking3.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117573" class="size-full wp-image-117573" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220709/detecting-dll-hijacking3.png" alt="Example of a SystemSettings.dll load event with a DLL Hijacking module verdict in Kaspersky SIEM" width="683" height="1082" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220709/detecting-dll-hijacking3.png 683w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220709/detecting-dll-hijacking3-189x300.png 189w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220709/detecting-dll-hijacking3-646x1024.png 646w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220709/detecting-dll-hijacking3-221x350.png 221w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220709/detecting-dll-hijacking3-631x1000.png 631w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220709/detecting-dll-hijacking3-177x280.png 177w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220709/detecting-dll-hijacking3-568x900.png 568w" sizes="auto, (max-width: 683px) 100vw, 683px" /></a><p id="caption-attachment-117573" class="wp-caption-text">Example of a SystemSettings.dll load event with a DLL Hijacking module verdict in Kaspersky SIEM</p></div>
  1062. <p>The resulting data helped our analysts highlight a suspicious DLL and analyze it in detail. The library was found to be a <a href="https://tip.kaspersky.com/landscape/software/S0353" target="_blank" rel="noopener">Cobalt Strike</a> implant. After loading it, the SystemSettings.exe process attempted to connect to the attackers&#8217; command-and-control server.</p><pre class="urvanov-syntax-highlighter-plain-tag">DNS query: connect-microsoft[.]com
  1063. DNS query type: AAAA
  1064. DNS response: ::ffff:8.219.1[.]155;
  1065. 8.219.1[.]155:8443</pre><p>
  1066. After establishing a connection, the attackers began host reconnaissance to gather various data to develop their attack.</p><pre class="urvanov-syntax-highlighter-plain-tag">C:\ProgramData\SystemSettings.exe
  1067. whoami /priv
  1068. hostname
  1069. reg query HKLM\SOFTWARE\Microsoft\Cryptography /v MachineGuid
  1070. powershell -c $psversiontable
  1071. dotnet --version
  1072. systeminfo
  1073. reg query "HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware Drivers"
  1074. cmdkey /list
  1075. REG query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
  1076. reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers
  1077. netsh wlan show profiles
  1078. netsh wlan show interfaces
  1079. set
  1080. net localgroup administrators
  1081. net user
  1082. net user administrator
  1083. ipconfig /all
  1084. net config workstation
  1085. net view
  1086. arp -a
  1087. route print
  1088. netstat -ano
  1089. tasklist
  1090. schtasks /query /fo LIST /v
  1091. net start
  1092. net share
  1093. net use
  1094. netsh firewall show config
  1095. netsh firewall show state
  1096. net view /domain
  1097. net time /domain
  1098. net group "domain admins" /domain
  1099. net localgroup administrators /domain
  1100. net group "domain controllers" /domain
  1101. net accounts /domain
  1102. nltest / domain_trusts
  1103. reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
  1104. reg query HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
  1105. reg query HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
  1106. reg query HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
  1107. reg query HKEY_CURRENT_USER\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce</pre><p>
  1108. Based on the attackers&#8217; TTPs, such as <a href="https://securelist.com/toddycat-keep-calm-and-check-logs/110696/" target="_blank" rel="noopener">loading Cobalt Strike as a DLL</a>, using the DLL sideloading technique (<a href="https://securelist.com/toddycat-keep-calm-and-check-logs/110696/" target="_blank" rel="noopener">1</a>, <a href="https://securelist.com/toddycat-traffic-tunneling-data-extraction-tools/112443/" target="_blank" rel="noopener">2</a>), and exploiting SharePoint, we can say with a high degree of confidence that the <a href="https://securelist.com/tag/toddycat/" target="_blank" rel="noopener">ToddyCat APT group</a> was behind the attack. Thanks to the prompt response of our model, we were able to respond in time and block this activity, preventing the attackers from causing damage to the organization.</p>
  1109. <h3 id="incident-2-infostealer-masquerading-as-a-policy-manager">Incident 2. Infostealer masquerading as a policy manager</h3>
  1110. <p>Another example was discovered by the model after a client was connected to MDR monitoring: a legitimate system file located in an application folder attempted to load a suspicious library that was stored next to it.</p><pre class="urvanov-syntax-highlighter-plain-tag">C:\Program Files\Chiniks\SettingSyncHost.exe
  1111. C:\Program Files\Chiniks\policymanager.dll E83F331BD1EC115524EBFF7043795BBE</pre><p>
  1112. The SettingSyncHost.exe file is a system host process for synchronizing settings between one user&#8217;s different devices. Its 32-bit and 64-bit versions are usually located in C:\Windows\System32\ and C:\Windows\SysWOW64\, respectively. In this incident, the file location differed from the normal one.</p>
  1113. <div id="attachment_117574" style="width: 877px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220932/detecting-dll-hijacking4.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117574" class="size-full wp-image-117574" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220932/detecting-dll-hijacking4.png" alt="Example of a policymanager.dll load event with a DLL Hijacking module verdict in Kaspersky SIEM" width="867" height="818" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220932/detecting-dll-hijacking4.png 867w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220932/detecting-dll-hijacking4-300x283.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220932/detecting-dll-hijacking4-768x725.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220932/detecting-dll-hijacking4-371x350.png 371w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220932/detecting-dll-hijacking4-740x698.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220932/detecting-dll-hijacking4-297x280.png 297w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27220932/detecting-dll-hijacking4-800x755.png 800w" sizes="auto, (max-width: 867px) 100vw, 867px" /></a><p id="caption-attachment-117574" class="wp-caption-text">Example of a policymanager.dll load event with a DLL Hijacking module verdict in Kaspersky SIEM</p></div>
  1114. <p>Analysis of the library file loaded by this process showed that it was malware designed to steal information from browsers.</p>
  1115. <div id="attachment_117575" style="width: 984px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221012/detecting-dll-hijacking5.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117575" class="size-full wp-image-117575" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221012/detecting-dll-hijacking5.png" alt="Graph of policymanager.dll activity in a sandbox" width="974" height="503" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221012/detecting-dll-hijacking5.png 974w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221012/detecting-dll-hijacking5-300x155.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221012/detecting-dll-hijacking5-768x397.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221012/detecting-dll-hijacking5-678x350.png 678w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221012/detecting-dll-hijacking5-740x382.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221012/detecting-dll-hijacking5-542x280.png 542w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221012/detecting-dll-hijacking5-800x413.png 800w" sizes="auto, (max-width: 974px) 100vw, 974px" /></a><p id="caption-attachment-117575" class="wp-caption-text">Graph of policymanager.dll activity in a sandbox</p></div>
  1116. <p>The file directly accesses browser files that contain user data.</p><pre class="urvanov-syntax-highlighter-plain-tag">C:\Users\&lt;user&gt;\AppData\Local\Google\Chrome\User Data\Local State</pre><p>
  1117. The library file is on the list of files used for DLL hijacking, as published in the HijackLibs project. The project contains a list of common processes and libraries employed in DLL-hijacking attacks, which can be used to detect these attacks.</p>
  1118. <h3 id="incident-3-malicious-loader-posing-as-a-security-solution">Incident 3. Malicious loader posing as a security solution</h3>
  1119. <p>Another incident discovered by our model occurred when a user connected a removable USB drive:</p>
  1120. <div id="attachment_117576" style="width: 984px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221114/detecting-dll-hijacking6.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117576" class="size-full wp-image-117576" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221114/detecting-dll-hijacking6.png" alt="Example of a Kaspersky SIEM event where a wsc.dll library was loaded from a USB drive, with a DLL Hijacking module verdict" width="974" height="894" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221114/detecting-dll-hijacking6.png 974w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221114/detecting-dll-hijacking6-300x275.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221114/detecting-dll-hijacking6-768x705.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221114/detecting-dll-hijacking6-381x350.png 381w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221114/detecting-dll-hijacking6-740x679.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221114/detecting-dll-hijacking6-305x280.png 305w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221114/detecting-dll-hijacking6-800x734.png 800w" sizes="auto, (max-width: 974px) 100vw, 974px" /></a><p id="caption-attachment-117576" class="wp-caption-text">Example of a Kaspersky SIEM event where a wsc.dll library was loaded from a USB drive, with a DLL Hijacking module verdict</p></div>
  1121. <p>The connected drive&#8217;s directory contained hidden folders with an identically named shortcut for each of them. The shortcuts had icons typically used for folders. Since file extensions were not shown by default on the drive, the user might have mistaken the shortcut for a folder and launched it. In turn, the shortcut opened the corresponding hidden folder and ran an executable file using the following command:</p><pre class="urvanov-syntax-highlighter-plain-tag">"%comspec%" /q /c "RECYCLER.BIN\1\CEFHelper.exe [$DIGITS] [$DIGITS]"</pre><p>
  1122. CEFHelper.exe is a legitimate Avast Antivirus executable that, through DLL sideloading, loaded the wsc.dll library, which is a malicious loader.</p>
  1123. <div id="attachment_117577" style="width: 461px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221216/detecting-dll-hijacking7.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117577" class="size-full wp-image-117577" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221216/detecting-dll-hijacking7.png" alt="Code snippet from the malicious file" width="451" height="485" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221216/detecting-dll-hijacking7.png 451w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221216/detecting-dll-hijacking7-279x300.png 279w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221216/detecting-dll-hijacking7-325x350.png 325w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/27221216/detecting-dll-hijacking7-260x280.png 260w" sizes="auto, (max-width: 451px) 100vw, 451px" /></a><p id="caption-attachment-117577" class="wp-caption-text">Code snippet from the malicious file</p></div>
  1124. <p>The loader opens a file named AvastAuth.dat, which contains an encrypted backdoor. The library reads the data from the file into memory, decrypts it, and executes it. After this, the backdoor attempts to connect to a remote command-and-control server.</p>
  1125. <p>The library file, which contains the malicious loader, is on the list of known libraries used for DLL sideloading, as presented on the HijackLibs project website.</p>
  1126. <h2 id="conclusion">Conclusion</h2>
  1127. <p>Integrating the model into the product provided the means of early and accurate detection of DLL-hijacking attempts which previously might have gone unnoticed. Even during the pilot testing, the model proved its effectiveness by identifying several incidents using this technique. Going forward, its accuracy will only increase as data accumulates and algorithms are updated in KSN, making this mechanism a reliable element of proactive protection for corporate systems.</p>
  1128. <h2 id="ioc">IoC</h2>
  1129. <p><strong>Legitimate files used for DLL hijacking<br />
  1130. </strong>E0E092D4EFC15F25FD9C0923C52C33D6 loads SystemSettings.dll<br />
  1131. 09CD396C8F4B4989A83ED7A1F33F5503 loads policymanager.dll<br />
  1132. A72036F635CECF0DCB1E9C6F49A8FA5B loads wsc.dll</p>
  1133. <p><strong>Malicious files</strong><br />
  1134. <a href="https://opentip.kaspersky.com/ea2882b05f8c11a285426f90859f23c6/?icid=gl_OpenTIP_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______20de3dc00773942a&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">EA2882B05F8C11A285426F90859F23C6</a>   SystemSettings.dll<br />
  1135. <a href="https://opentip.kaspersky.com/e83f331bd1ec115524ebff7043795bbe/?icid=gl_OpenTIP_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______cbf93adf43b574f2&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">E83F331BD1EC115524EBFF7043795BBE</a>   policymanager.dll<br />
  1136. <a href="https://opentip.kaspersky.com/831252e7fa9bd6fa174715647ebce516/?icid=gl_OpenTIP_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______01488fcf88e4ecaf&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">831252E7FA9BD6FA174715647EBCE516</a>   wsc.dll</p>
  1137. <p><strong>Paths</strong><br />
  1138. C:\ProgramData\SystemSettings.exe<br />
  1139. C:\ProgramData\SystemSettings.dll<br />
  1140. C:\Program Files\Chiniks\SettingSyncHost.exe<br />
  1141. C:\Program Files\Chiniks\policymanager.dll<br />
  1142. D:\RECYCLER.BIN\1\CEFHelper.exe<br />
  1143. D:\RECYCLER.BIN\1\wsc.dll</p>
  1144. ]]></content:encoded>
  1145. <wfw:commentRss>https://securelist.com/detecting-dll-hijacking-with-machine-learning-in-kaspersky-siem/117567/feed/</wfw:commentRss>
  1146. <slash:comments>0</slash:comments>
  1147. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30120509/SL-DLL-Hicjacking-detection-featured.jpg" width="2000" height="1000"><media:keywords>full</media:keywords></media:content>
  1148. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30120509/SL-DLL-Hicjacking-detection-featured-1024x512.jpg" width="1024" height="512"><media:keywords>large</media:keywords></media:content>
  1149. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30120509/SL-DLL-Hicjacking-detection-featured-300x150.jpg" width="300" height="150"><media:keywords>medium</media:keywords></media:content>
  1150. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30120509/SL-DLL-Hicjacking-detection-featured-150x150.jpg" width="150" height="150"><media:keywords>thumbnail</media:keywords></media:content>
  1151. </item>
  1152. <item>
  1153. <title>Forensic journey: hunting evil within AmCache</title>
  1154. <link>https://securelist.com/amcache-forensic-artifact/117622/</link>
  1155. <comments>https://securelist.com/amcache-forensic-artifact/117622/#respond</comments>
  1156. <dc:creator><![CDATA[Cristian Souza]]></dc:creator>
  1157. <pubDate>Wed, 01 Oct 2025 10:00:20 +0000</pubDate>
  1158. <category><![CDATA[SOC, TI and IR posts]]></category>
  1159. <category><![CDATA[Digital forensics]]></category>
  1160. <category><![CDATA[Threat hunting]]></category>
  1161. <category><![CDATA[Researchers tools]]></category>
  1162. <category><![CDATA[Incident response]]></category>
  1163. <category><![CDATA[Forensic journey]]></category>
  1164. <category><![CDATA[Cybersecurity]]></category>
  1165. <guid isPermaLink="false">https://kasperskycontenthub.com/securelist/?p=117622</guid>
  1166.  
  1167. <description><![CDATA[Kaspersky experts share insights into how AmCache may prove useful during incident investigation, and provide a command line tool to extract data from this artifact.]]></description>
  1168. <content:encoded><![CDATA[<p><img width="990" height="400" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/01111328/SL-AmCache-forensic-artifact-featured-990x400.jpg" class="attachment-securelist-huge-promo size-securelist-huge-promo wp-post-image" alt="" decoding="async" loading="lazy" /></p><h2 id="introduction">Introduction</h2>
  1169. <p>When it comes to digital forensics, AmCache plays a vital role in identifying malicious activities in Windows systems. This artifact allows the identification of the execution of both benign and malicious software on a machine. It is managed by the operating system, and at the time of writing this article, there is no known way to modify or remove AmCache data. Thus, in an incident response scenario, it could be the key to identifying lost artifacts (e.g., ransomware that auto-deletes itself), allowing analysts to search for patterns left by the attacker, such as file names and paths. Furthermore, AmCache stores the SHA-1 hashes of executed files, which allows DFIR professionals to search public threat intelligence feeds — such as <a href="https://opentip.kaspersky.com/" target="_blank" rel="noopener">OpenTIP</a> and <a href="https://www.virustotal.com/gui/" target="_blank" rel="noopener">VirusTotal</a> — and generate rules for blocking this same file on other systems across the network.</p>
  1170. <p>This article presents a comprehensive analysis of the AmCache artifact, allowing readers to better understand its inner workings. In addition, we present a new tool named &#8220;<a href="https://github.com/cristianzsh/amcache-evilhunter" target="_blank" rel="noopener">AmCache-EvilHunter</a>&#8220;, which can be used by any professional to easily parse the <code>Amcache.hve</code> file and extract IOCs. The tool is also able to query the aforementioned intelligence feeds to check for malicious file detections, this level of built-in automation reduces manual effort and speeds up threat detection, which is of significant value for analysts and responders.</p>
  1171. <h2 id="the-importance-of-evidence-of-execution">The importance of evidence of execution</h2>
  1172. <p>Evidence of execution is fundamentally important in digital forensics and incident response, since it helps investigators reconstruct how the system was used during an intrusion. Artifacts such as Prefetch, ShimCache, and <a href="https://securelist.com/userassist-artifact-forensic-value-for-incident-response/116911/" target="_blank" rel="noopener">UserAssist</a> offer clues about what was executed. AmCache is also a robust artifact for evidencing execution, preserving metadata that indicates a file&#8217;s presence and execution, even if the file has been deleted or modified. An advantage of AmCache over other Windows artifacts is that unlike them, it stores the file hash, which is immensely useful for analysts, as it can be used to hunt malicious files across the network, increasing the likelihood of fully identifying, containing, and eradicating the threat.</p>
  1173. <h2 id="introduction-to-amcache">Introduction to AmCache</h2>
  1174. <p>Application Activity Cache (AmCache) was first introduced in Windows 7 and fully leveraged in Windows 8 and beyond. Its purpose is to replace the older <code>RecentFileCache.bcf</code> in newer systems. Unlike its predecessor, AmCache includes valuable forensic information about program execution, executed binaries and loaded drivers.</p>
  1175. <p>This artifact is stored as a registry hive file named <code>Amcache.hve</code> in the directory <code>C:\Windows\AppCompat\Programs</code>. The metadata stored in this file includes file paths, publisher data, compilation timestamps, file sizes, and SHA-1 hashes.</p>
  1176. <p>It is important to highlight that the AmCache format does not depend on the operating system version, but rather on the version of the libraries (DLLs) responsible for filling the cache. In this way, even Windows systems with different patch levels could have small differences in the structure of the AmCache files. The known libraries used for filling this cache are stored under <code>%WinDir%\System32</code> with the following names:</p>
  1177. <ul>
  1178. <li>aecache.dll</li>
  1179. <li>aeevts.dll</li>
  1180. <li>aeinv.dll</li>
  1181. <li>aelupsvc.dll</li>
  1182. <li>aepdu.dll</li>
  1183. <li>aepic.dll</li>
  1184. </ul>
  1185. <p>It is worth noting that this artifact has its peculiarities and limitations. The AmCache computes the SHA-1 hash over only the first 31,457,280 bytes (≈31 MB) of each executable, so comparing its stored hash online can fail for files exceeding this size. Furthermore, <code>Amcache.hve</code> is not a true execution log: it records files in directories scanned by the Microsoft Compatibility Appraiser, executables and drivers copied during program execution, and GUI applications that required compatibility shimming. Only the last category reliably indicates actual execution. Items in the first two groups simply confirm file presence on the system, with no data on whether or when they ran.</p>
  1186. <p>In the same directory, we can find additional LOG files used to ensure <code>Amcache.hve</code> consistency and recovery operations:</p>
  1187. <ul>
  1188. <li>C:\Windows\AppCompat\Programs\Amcache.hve.*LOG1</li>
  1189. <li>C:\Windows\AppCompat\Programs\Amcache.hve.*LOG2</li>
  1190. </ul>
  1191. <p>The <code>Amcache.hve</code> file can be collected from a system for forensic analysis using tools like <a href="https://github.com/abaghinyan/aralez" target="_blank" rel="noopener">Aralez</a>, <a href="https://docs.velociraptor.app/downloads/" target="_blank" rel="noopener">Velociraptor</a>, or <a href="https://www.sans.org/tools/kape" target="_blank" rel="noopener">Kape</a>.</p>
  1192. <h2 id="amcache-hve-structure">Amcache.hve structure</h2>
  1193. <p>The <code>Amcache.hve</code> file is a Windows Registry hive in REGF format; it contains multiple subkeys that store distinct classes of data. A simple Python parser can be implemented to iterate through <code>Amcache.hve</code> and present its keys:</p><pre class="urvanov-syntax-highlighter-plain-tag">#!/usr/bin/env python3
  1194.  
  1195. import sys
  1196. from Registry.Registry import Registry
  1197.  
  1198. hive = Registry(str(sys.argv[1]))
  1199. root = hive.open("Root")
  1200.  
  1201. for rec in root.subkeys():
  1202.    print(rec.name())</pre><p>
  1203. The result of this parser when executed is:</p>
  1204. <div id="attachment_117624" style="width: 1667px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163530/amcache-forensic-artifact1.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117624" class="size-full wp-image-117624" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163530/amcache-forensic-artifact1.png" alt="AmCache keys" width="1657" height="796" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163530/amcache-forensic-artifact1.png 1657w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163530/amcache-forensic-artifact1-300x144.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163530/amcache-forensic-artifact1-1024x492.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163530/amcache-forensic-artifact1-768x369.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163530/amcache-forensic-artifact1-1536x738.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163530/amcache-forensic-artifact1-729x350.png 729w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163530/amcache-forensic-artifact1-740x355.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163530/amcache-forensic-artifact1-583x280.png 583w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163530/amcache-forensic-artifact1-800x384.png 800w" sizes="auto, (max-width: 1657px) 100vw, 1657px" /></a><p id="caption-attachment-117624" class="wp-caption-text">AmCache keys</p></div>
  1205. <p>From a DFIR perspective, the keys that are of the most interest to us are <code>InventoryApplicationFile</code>, <code>InventoryApplication</code>, <code>InventoryDriverBinary</code>, and <code>InventoryApplicationShortcut</code>, which are described in detail in the following subsections.</p>
  1206. <h3 id="inventoryapplicationfile">InventoryApplicationFile</h3>
  1207. <p>The <code>InventoryApplicationFile</code> key is essential for tracking every executable discovered on the system. Under this key, each executable is represented by its own uniquely named subkey, which stores the following main metadata:</p>
  1208. <ul>
  1209. <li><strong>ProgramId:</strong> a unique hash generated from the binary name, version, publisher, and language, with some zeroes appended to the beginning of the hash</li>
  1210. <li><strong>FileID:</strong> the SHA-1 hash of the file, with four zeroes appended to the beginning of the hash</li>
  1211. <li><strong>LowerCaseLongPath:</strong> the full lowercase path to the executable</li>
  1212. <li><strong>Name:</strong> the file base name without the path information</li>
  1213. <li><strong>OriginalFileName:</strong> the original filename as specified in the PE header&#8217;s version resource, indicating the name assigned by the developer at build time</li>
  1214. <li><strong>Publisher:</strong> often used to verify if the source of the binary is legitimate. For malware, this subkey is usually empty</li>
  1215. <li><strong>Version:</strong> the specific build or release version of the executable</li>
  1216. <li><strong>BinaryType:</strong> indicates whether the executable is a 32-bit or 64-bit binary</li>
  1217. <li><strong>ProductName:</strong> the ProductName field from the version resource, describing the broader software product or suite to which the executable belongs</li>
  1218. <li><strong>LinkDate: </strong>the compilation timestamp extracted from the PE header</li>
  1219. <li><strong>Size:</strong> the file size in bytes</li>
  1220. <li><strong>IsOsComponent:</strong> a boolean flag that specifies whether the executable is a built-in OS component or a third-party application/library</li>
  1221. </ul>
  1222. <p>With some tweaks to our original Python parser, we can read the information stored within this key:</p><pre class="urvanov-syntax-highlighter-plain-tag">#!/usr/bin/env python3
  1223.  
  1224. import sys
  1225. from Registry.Registry import Registry
  1226.  
  1227. hive = Registry(sys.argv[1])
  1228. root = hive.open("Root")
  1229.  
  1230. subs = {k.name(): k for k in root.subkeys()}
  1231. parent = subs.get("InventoryApplicationFile")
  1232.  
  1233. for rec in parent.subkeys():
  1234.   vals = {v.name(): v.value() for v in rec.values()}
  1235.   print("{}\n{}\n\n-----------\n".format(rec, vals))</pre><p>
  1236. <div id="attachment_117625" style="width: 1345px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163907/amcache-forensic-artifact2.jpeg" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117625" class="size-full wp-image-117625" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163907/amcache-forensic-artifact2.jpeg" alt="InventoryApplicationFile subkeys" width="1335" height="560" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163907/amcache-forensic-artifact2.jpeg 1335w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163907/amcache-forensic-artifact2-300x126.jpeg 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163907/amcache-forensic-artifact2-1024x430.jpeg 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163907/amcache-forensic-artifact2-768x322.jpeg 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163907/amcache-forensic-artifact2-834x350.jpeg 834w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163907/amcache-forensic-artifact2-740x310.jpeg 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163907/amcache-forensic-artifact2-668x280.jpeg 668w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30163907/amcache-forensic-artifact2-800x336.jpeg 800w" sizes="auto, (max-width: 1335px) 100vw, 1335px" /></a><p id="caption-attachment-117625" class="wp-caption-text">InventoryApplicationFile subkeys</p></div>
  1237. <p>We can also use tools like Registry Explorer to see the same data in a graphical way:</p>
  1238. <div id="attachment_117626" style="width: 1295px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164000/amcache-forensic-artifact3.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117626" class="size-full wp-image-117626" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164000/amcache-forensic-artifact3.png" alt="InventoryApplicationFile inspected through Registry Explorer" width="1285" height="546" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164000/amcache-forensic-artifact3.png 1285w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164000/amcache-forensic-artifact3-300x127.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164000/amcache-forensic-artifact3-1024x435.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164000/amcache-forensic-artifact3-768x326.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164000/amcache-forensic-artifact3-824x350.png 824w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164000/amcache-forensic-artifact3-740x314.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164000/amcache-forensic-artifact3-659x280.png 659w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164000/amcache-forensic-artifact3-800x340.png 800w" sizes="auto, (max-width: 1285px) 100vw, 1285px" /></a><p id="caption-attachment-117626" class="wp-caption-text">InventoryApplicationFile inspected through Registry Explorer</p></div>
  1239. <p>As mentioned before, AmCache computes the SHA-1 hash over only the first 31,457,280 bytes (≈31 MB). To prove this, we did a small experiment, during which we got a binary smaller than 31 MB (Aralez) and one larger than this value (a custom version of Velociraptor). For the first case, the SHA-1 hash of the entire binary was stored in AmCache.</p>
  1240. <div id="attachment_117627" style="width: 1720px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164055/amcache-forensic-artifact4.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117627" class="size-full wp-image-117627" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164055/amcache-forensic-artifact4.png" alt="First AmCache SHA-1 storage scenario" width="1710" height="561" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164055/amcache-forensic-artifact4.png 1710w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164055/amcache-forensic-artifact4-300x98.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164055/amcache-forensic-artifact4-1024x336.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164055/amcache-forensic-artifact4-768x252.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164055/amcache-forensic-artifact4-1536x504.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164055/amcache-forensic-artifact4-1067x350.png 1067w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164055/amcache-forensic-artifact4-740x243.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164055/amcache-forensic-artifact4-853x280.png 853w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164055/amcache-forensic-artifact4-800x262.png 800w" sizes="auto, (max-width: 1710px) 100vw, 1710px" /></a><p id="caption-attachment-117627" class="wp-caption-text">First AmCache SHA-1 storage scenario</p></div>
  1241. <p>For the second scenario, we used the dd utility to extract the first 31 MB of the Velociraptor binary:</p>
  1242. <div id="attachment_117628" style="width: 1566px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164152/amcache-forensic-artifact5.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117628" class="size-full wp-image-117628" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164152/amcache-forensic-artifact5.png" alt="Stripped binary" width="1556" height="375" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164152/amcache-forensic-artifact5.png 1556w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164152/amcache-forensic-artifact5-300x72.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164152/amcache-forensic-artifact5-1024x247.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164152/amcache-forensic-artifact5-768x185.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164152/amcache-forensic-artifact5-1536x370.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164152/amcache-forensic-artifact5-1452x350.png 1452w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164152/amcache-forensic-artifact5-740x178.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164152/amcache-forensic-artifact5-1162x280.png 1162w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164152/amcache-forensic-artifact5-800x193.png 800w" sizes="auto, (max-width: 1556px) 100vw, 1556px" /></a><p id="caption-attachment-117628" class="wp-caption-text">Stripped binary</p></div>
  1243. <p>When checking the Velociraptor entry on AmCache, we found that it indeed stored the SHA-1 hash calculated only for the first 31,457,280 bytes of the binary. Interestingly enough, the Size value represented the actual size of the original file. Thus, relying only on the file hash stored on AmCache for querying threat intelligence portals may be not enough when dealing with large files. So, we need to check if the file size in the record is bigger than 31,457,280 bytes before searching threat intelligence portals.</p>
  1244. <div id="attachment_117629" style="width: 1720px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164250/amcache-forensic-artifact6.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117629" class="size-full wp-image-117629" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164250/amcache-forensic-artifact6.png" alt="Second AmCache SHA-1 storage scenario" width="1710" height="552" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164250/amcache-forensic-artifact6.png 1710w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164250/amcache-forensic-artifact6-300x97.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164250/amcache-forensic-artifact6-1024x331.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164250/amcache-forensic-artifact6-768x248.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164250/amcache-forensic-artifact6-1536x496.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164250/amcache-forensic-artifact6-1084x350.png 1084w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164250/amcache-forensic-artifact6-740x239.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164250/amcache-forensic-artifact6-867x280.png 867w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30164250/amcache-forensic-artifact6-800x258.png 800w" sizes="auto, (max-width: 1710px) 100vw, 1710px" /></a><p id="caption-attachment-117629" class="wp-caption-text">Second AmCache SHA-1 storage scenario</p></div>
  1245. <p>Additionally, attackers may take advantage of this characteristic to purposely generate large malicious binaries. In this way, even if investigators find that a malware was executed/present on a Windows system, the actual SHA-1 hash of the binary will still be unknown, making it difficult to track it across the network and gathering it from public databases like VirusTotal.</p>
  1246. <h4 id="inventoryapplicationfile-use-case-example-finding-a-deleted-tool-that-was-used">InventoryApplicationFile – use case example: finding a deleted tool that was used</h4>
  1247. <p>Let&#8217;s suppose you are searching for a possible insider threat. The user denies having run any suspicious programs, and any suspicious software was securely erased from disk. But in the InventoryApplicationFile, you find a record of winscp.exe being present in the user&#8217;s Downloads folder. Even though the file is gone, this tells you the tool was on the machine and it was likely used to transfer files before being deleted. In our incident response practice, we have seen similar cases, where this key proved useful.</p>
  1248. <h3 id="inventoryapplication">InventoryApplication</h3>
  1249. <p>The <code>InventoryApplication</code> key records details about applications that were previously installed on the system. Unlike <code>InventoryApplicationFile</code>, which logs every executable encountered, <code>InventoryApplication</code> focuses on those with installation records. Each entry is named by its unique ProgramId, allowing straightforward linkage back to the corresponding InventoryApplicationFile key. Additionally, <code>InventoryApplication</code> has the following subkeys of interest:</p>
  1250. <ul>
  1251. <li><strong>InstallDate:</strong> a date‑time string indicating when the OS first recorded or recognized the application</li>
  1252. <li><strong>MsiInstallDate:</strong> present only if installed via Windows Installer (MSI); shows the exact time the MSI package was applied, sourced directly from the MSI metadata</li>
  1253. <li><strong>UninstallString:</strong> the exact command line used to remove the application</li>
  1254. <li><strong>Language:</strong> numeric locale identifier set by the developer (LCID)</li>
  1255. <li><strong>Publisher:</strong> the name of the software publisher or vendor</li>
  1256. <li><strong>ManifestPath:</strong> the file path to the installation manifest used by UWP or AppX/MSIX apps</li>
  1257. </ul>
  1258. <p>With a simple change to our parser, we can check the data contained in this key:</p><pre class="urvanov-syntax-highlighter-plain-tag">&lt;...&gt;
  1259. parent = subs.get("InventoryApplication")
  1260. &lt;...&gt;</pre><p>
  1261. <div id="attachment_117630" style="width: 1355px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165005/amcache-forensic-artifact7.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117630" class="size-full wp-image-117630" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165005/amcache-forensic-artifact7.png" alt="InventoryApplication subkeys" width="1345" height="345" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165005/amcache-forensic-artifact7.png 1345w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165005/amcache-forensic-artifact7-300x77.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165005/amcache-forensic-artifact7-1024x263.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165005/amcache-forensic-artifact7-768x197.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165005/amcache-forensic-artifact7-740x190.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165005/amcache-forensic-artifact7-1092x280.png 1092w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165005/amcache-forensic-artifact7-800x205.png 800w" sizes="auto, (max-width: 1345px) 100vw, 1345px" /></a><p id="caption-attachment-117630" class="wp-caption-text">InventoryApplication subkeys</p></div>
  1262. <p>When a <code>ProgramId</code> appears both here and under <code>InventoryApplicationFile</code>, it confirms that the executable is not merely present or executed, but was formally installed. This distinction helps us separate ad-hoc copies or transient executions from installed software. The following figure shows the <code>ProgramId</code> of the WinRAR software under <code>InventoryApplicationFile</code>.</p>
  1263. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165157/amcache-forensic-artifact8.png" class="magnificImage"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-117631" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165157/amcache-forensic-artifact8.png" alt="" width="1434" height="480" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165157/amcache-forensic-artifact8.png 1434w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165157/amcache-forensic-artifact8-300x100.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165157/amcache-forensic-artifact8-1024x343.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165157/amcache-forensic-artifact8-768x257.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165157/amcache-forensic-artifact8-1046x350.png 1046w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165157/amcache-forensic-artifact8-740x248.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165157/amcache-forensic-artifact8-837x280.png 837w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165157/amcache-forensic-artifact8-800x268.png 800w" sizes="auto, (max-width: 1434px) 100vw, 1434px" /></a></p>
  1264. <p>When searching for the <code>ProgramId</code>, we find an exact match under <code>InventoryApplication</code>. This confirms that WinRAR was indeed installed on the system.</p>
  1265. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165257/amcache-forensic-artifact9.png" class="magnificImage"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-117632" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165257/amcache-forensic-artifact9.png" alt="" width="1435" height="421" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165257/amcache-forensic-artifact9.png 1435w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165257/amcache-forensic-artifact9-300x88.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165257/amcache-forensic-artifact9-1024x300.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165257/amcache-forensic-artifact9-768x225.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165257/amcache-forensic-artifact9-1193x350.png 1193w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165257/amcache-forensic-artifact9-740x217.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165257/amcache-forensic-artifact9-954x280.png 954w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165257/amcache-forensic-artifact9-800x235.png 800w" sizes="auto, (max-width: 1435px) 100vw, 1435px" /></a></p>
  1266. <p>Another interesting detail about <code>InventoryApplication</code> is that it contains a subkey named <code>LastScanTime</code>, which is stored separately from <code>ProgramIds</code> and holds a value representing the last time the Microsoft Compatibility Appraiser ran. This is a scheduled task that launches the <code>compattelrunner.exe</code> binary, and the information in this key should only be updated when that task executes. As a result, software installed since the last run of the Appraiser may not appear here. The <code>LastScanTime</code> value is stored in <strong>Windows FileTime</strong> format.</p>
  1267. <div id="attachment_117633" style="width: 888px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165538/amcache-forensic-artifact10.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117633" class="size-full wp-image-117633" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165538/amcache-forensic-artifact10.png" alt="InventoryApplication LastScanTime information" width="878" height="118" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165538/amcache-forensic-artifact10.png 878w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165538/amcache-forensic-artifact10-300x40.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165538/amcache-forensic-artifact10-768x103.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165538/amcache-forensic-artifact10-740x99.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165538/amcache-forensic-artifact10-800x108.png 800w" sizes="auto, (max-width: 878px) 100vw, 878px" /></a><p id="caption-attachment-117633" class="wp-caption-text">InventoryApplication LastScanTime information</p></div>
  1268. <h4 id="inventoryapplication-use-case-example-spotting-remote-access-software">InventoryApplication – use case example: spotting remote access software</h4>
  1269. <p>Suppose that during an incident response engagement, you find an entry for AnyDesk in the InventoryApplication key (although the application is not installed anymore). This means that the attacker likely used it for remote access and then removed it to cover their tracks. Even if wiped from disk, this key proves it was present. We have seen this scenario in real-world cases more than once.</p>
  1270. <h3 id="inventorydriverbinary">InventoryDriverBinary</h3>
  1271. <p>The <code>InventoryDriverBinary</code> key records every kernel-mode driver that the system has loaded, providing the essential metadata needed to spot suspicious or malicious drivers. Under this key, each driver is captured in its own uniquely named subkey and includes:</p>
  1272. <ul>
  1273. <li><strong>FileID</strong>: the SHA-1 hash of the driver binary, with four zeroes appended to the beginning of the hash</li>
  1274. <li><strong>LowerCaseLongPath</strong>: the full lowercase file path to the driver on disk</li>
  1275. <li><strong>DigitalSignature</strong>: the code-signing certificate details. A valid, trusted signature helps confirm the driver&#8217;s authenticity</li>
  1276. <li><strong>LastModified</strong>: the file&#8217;s last modification timestamp from the filesystem metadata, revealing when the driver binary was most recently altered on disk</li>
  1277. </ul>
  1278. <p>Because Windows drivers run at the highest privilege level, they are frequently exploited by malware. For example, a previous study conducted by Kaspersky shows that attackers are <a href="https://securelist.com/av-killer-exploiting-throttlestop-sys/117026/" target="_blank" rel="noopener">exploiting vulnerable drivers for killing EDR processes</a>. When dealing with a cybersecurity incident, investigators correlate each driver&#8217;s cryptographic hash, file path, signature status, and modification timestamp. That can help in verifying if the binary matches a known, signed version, detecting any tampering by spotting unexpected modification dates, and flagging unsigned or anomalously named drivers for deeper analysis. Projects like <a href="https://www.loldrivers.io/" target="_blank" rel="noopener">LOLDrivers</a> help identify vulnerable drivers in use by attackers in the wild.</p>
  1279. <div id="attachment_117634" style="width: 1460px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165732/amcache-forensic-artifact11.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117634" class="size-full wp-image-117634" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165732/amcache-forensic-artifact11.png" alt="InventoryDriverBinary inspection" width="1450" height="533" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165732/amcache-forensic-artifact11.png 1450w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165732/amcache-forensic-artifact11-300x110.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165732/amcache-forensic-artifact11-1024x376.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165732/amcache-forensic-artifact11-768x282.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165732/amcache-forensic-artifact11-952x350.png 952w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165732/amcache-forensic-artifact11-740x272.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165732/amcache-forensic-artifact11-762x280.png 762w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30165732/amcache-forensic-artifact11-800x294.png 800w" sizes="auto, (max-width: 1450px) 100vw, 1450px" /></a><p id="caption-attachment-117634" class="wp-caption-text">InventoryDriverBinary inspection</p></div>
  1280. <p>In addition to the <code>InventoryDriverBinary</code>, AmCache also provides the <code>InventoryApplicationDriver</code> key, which keeps track of all drivers that have been installed by specific applications. It includes two entries:</p>
  1281. <ul>
  1282. <li><strong>DriverServiceName</strong>, which identifies the name of the service linked to the installed driver; and</li>
  1283. <li><strong>ProgramIds</strong>, which lists the program identifiers (corresponding to the key names under <code>InventoryApplication</code>) that were responsible for installing the driver.</li>
  1284. </ul>
  1285. <p>As shown in the figure below, the <code>ProgramIds</code> key can be used to track the associated program that uses this driver:</p>
  1286. <div id="attachment_117635" style="width: 1565px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170026/amcache-forensic-artifact12.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117635" class="size-full wp-image-117635" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170026/amcache-forensic-artifact12.png" alt="Checking program information by ProgramIds" width="1555" height="894" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170026/amcache-forensic-artifact12.png 1555w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170026/amcache-forensic-artifact12-300x172.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170026/amcache-forensic-artifact12-1024x589.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170026/amcache-forensic-artifact12-768x442.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170026/amcache-forensic-artifact12-1536x883.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170026/amcache-forensic-artifact12-609x350.png 609w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170026/amcache-forensic-artifact12-740x425.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170026/amcache-forensic-artifact12-487x280.png 487w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170026/amcache-forensic-artifact12-800x460.png 800w" sizes="auto, (max-width: 1555px) 100vw, 1555px" /></a><p id="caption-attachment-117635" class="wp-caption-text">Checking program information by ProgramIds</p></div>
  1287. <h4 id="inventorydriverbinary-use-case-example-catching-a-bad-driver">InventoryDriverBinary – use case example: catching a bad driver</h4>
  1288. <p>If the system was compromised through the abuse of a known vulnerable or malicious driver, you can use the <code>InventoryDriverBinary</code> registry key to confirm its presence. Even if the driver has been removed or hidden, remnants in this key can reveal that it was once loaded, which helps identify kernel-level compromises and supporting timeline reconstruction during the investigation. This is exactly how the <a href="https://securelist.com/av-killer-exploiting-throttlestop-sys/117026/" target="_blank" rel="noopener">AV Killer malware</a> was discovered.</p>
  1289. <h3 id="inventoryapplicationshortcut">InventoryApplicationShortcut</h3>
  1290. <p>This key contains entries for <code>.lnk</code> (shortcut) files that were present in folders like each user&#8217;s Start Menu or Desktop. Within each shortcut key, the ShortcutPath provides the absolute path to the LNK file at the moment of discovery. The <code>ShortcutTargetPath</code> shows where the shortcut pointed. We can also search for the <code>ProgramId</code> entry within the <code>InventoryApplication</code> key using the <code>ShortcutProgramId</code> (similar to what we did for drivers).</p>
  1291. <div id="attachment_117636" style="width: 1596px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170311/amcache-forensic-artifact13.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117636" class="size-full wp-image-117636" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170311/amcache-forensic-artifact13.png" alt="InventoryApplicationShortcut key" width="1586" height="306" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170311/amcache-forensic-artifact13.png 1586w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170311/amcache-forensic-artifact13-300x58.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170311/amcache-forensic-artifact13-1024x198.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170311/amcache-forensic-artifact13-768x148.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170311/amcache-forensic-artifact13-1536x296.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170311/amcache-forensic-artifact13-740x143.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170311/amcache-forensic-artifact13-1451x280.png 1451w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30170311/amcache-forensic-artifact13-800x154.png 800w" sizes="auto, (max-width: 1586px) 100vw, 1586px" /></a><p id="caption-attachment-117636" class="wp-caption-text">InventoryApplicationShortcut key</p></div>
  1292. <h4 id="inventoryapplicationshortcut-use-case-example-confirming-use-of-a-removed-app">InventoryApplicationShortcut – use case example: confirming use of a removed app</h4>
  1293. <p>You find that a suspicious program was deleted from the computer, but the user claims they never ran it. The <code>InventoryApplicationShortcut</code> key shows a shortcut to that program was on their desktop and was accessed recently. With supplementary evidence, such as that from Prefetch analysis, you can confirm the execution of the software.</p>
  1294. <h2 id="amcache-key-comparison">AmCache key comparison</h2>
  1295. <p>The table below summarizes the information presented in the previous subsections, highlighting the main information about each AmCache key.</p>
  1296. <table>
  1297. <tbody>
  1298. <tr>
  1299. <td><strong>Key</strong></td>
  1300. <td><strong>Contains</strong></td>
  1301. <td><strong>Indicates execution?</strong></td>
  1302. </tr>
  1303. <tr>
  1304. <td>InventoryApplicationFile</td>
  1305. <td>Metadata for all executables seen on the system.</td>
  1306. <td>Possibly (presence = likely executed)</td>
  1307. </tr>
  1308. <tr>
  1309. <td>InventoryApplication</td>
  1310. <td>Metadata about formally installed software.</td>
  1311. <td>No (indicates installation, not necessarily execution)</td>
  1312. </tr>
  1313. <tr>
  1314. <td>InventoryDriverBinary</td>
  1315. <td>Metadata about loaded kernel-mode drivers.</td>
  1316. <td>Yes (driver was loaded into memory)</td>
  1317. </tr>
  1318. <tr>
  1319. <td>InventoryApplicationShortcut</td>
  1320. <td>Information about .lnk files.</td>
  1321. <td>Possibly (combine with other data for confirmation)</td>
  1322. </tr>
  1323. </tbody>
  1324. </table>
  1325. <h2 id="amcache-evilhunter">AmCache-EvilHunter</h2>
  1326. <p>Undoubtedly <code>Amcache.hve</code> is a very important forensic artifact. However, we could not find any tool that effectively parses its contents while providing threat intelligence for the analyst. With this in mind, we developed <a href="https://github.com/cristianzsh/amcache-evilhunter" target="_blank" rel="noopener">AmCache-EvilHunter</a> a command-line tool to parse and analyze Windows <code>Amcache.hve</code> registry hives, identify evidence of execution, suspicious executables, and integrate Kaspersky OpenTIP and VirusTotal lookups for enhanced threat intelligence.</p>
  1327. <p>AmCache-EvilHunter is capable of processing the <code>Amcache.hve</code> file and filter records by date range (with the options <code>--start</code> and <code>--end</code>). It is also possible to search records using keywords (<code>--search</code>), which is useful for searching for known naming conventions adopted by attackers. The results can be saved in CSV (<code>--csv</code>) or JSON (<code>--json</code>) formats.</p>
  1328. <p>The image below shows an example of execution of AmCache-EvilHunter with these basic options, by using the following command:</p><pre class="urvanov-syntax-highlighter-plain-tag">amcache-evilhunter -i Amcache.hve --start 2025-06-19 --end 2025-06-19 --csv output.csv</pre><p>
  1329. The output contains all applications that were present on the machine on June 19, 2025. The last column contains information whether the file is an operating system component, or not.</p>
  1330. <div id="attachment_117638" style="width: 1352px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213455/amcache-forensic-artifact14.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117638" class="size-full wp-image-117638" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213455/amcache-forensic-artifact14.png" alt="Basic usage of AmCache-EvilHunter" width="1342" height="370" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213455/amcache-forensic-artifact14.png 1342w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213455/amcache-forensic-artifact14-300x83.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213455/amcache-forensic-artifact14-1024x282.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213455/amcache-forensic-artifact14-768x212.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213455/amcache-forensic-artifact14-1269x350.png 1269w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213455/amcache-forensic-artifact14-740x204.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213455/amcache-forensic-artifact14-1016x280.png 1016w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213455/amcache-forensic-artifact14-800x221.png 800w" sizes="auto, (max-width: 1342px) 100vw, 1342px" /></a><p id="caption-attachment-117638" class="wp-caption-text">Basic usage of AmCache-EvilHunter</p></div>
  1331. <div id="attachment_117639" style="width: 1350px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213535/amcache-forensic-artifact15.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117639" class="size-full wp-image-117639" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213535/amcache-forensic-artifact15.png" alt="CSV result" width="1340" height="268" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213535/amcache-forensic-artifact15.png 1340w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213535/amcache-forensic-artifact15-300x60.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213535/amcache-forensic-artifact15-1024x205.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213535/amcache-forensic-artifact15-768x154.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213535/amcache-forensic-artifact15-740x148.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213535/amcache-forensic-artifact15-800x160.png 800w" sizes="auto, (max-width: 1340px) 100vw, 1340px" /></a><p id="caption-attachment-117639" class="wp-caption-text">CSV result</p></div>
  1332. <p>Analysts are often faced with a large volume of executables and artifacts. To narrow down the scope and reduce noise, the tool is able to search for known suspicious binaries with the <code>--find-suspicious option</code>. The patterns used by the tool include common malware names, Windows processes containing small typos (e.g., <code>scvhost.exe</code>), legitimate executables usually found in use during incidents, one-letter/one-digit file names (such as <code>1.exe</code>, <code>a.exe</code>), or random hex strings. The figure below shows the results obtained by using this option; as highlighted, one <code>svchost.exe</code> file is part of the operating system and the other is not, making it a good candidate for collection and analysis if not deleted.</p>
  1333. <div id="attachment_117640" style="width: 1351px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213814/amcache-forensic-artifact16.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117640" class="size-full wp-image-117640" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213814/amcache-forensic-artifact16.png" alt="Suspicious files identification" width="1341" height="235" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213814/amcache-forensic-artifact16.png 1341w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213814/amcache-forensic-artifact16-300x53.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213814/amcache-forensic-artifact16-1024x179.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213814/amcache-forensic-artifact16-768x135.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213814/amcache-forensic-artifact16-740x130.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213814/amcache-forensic-artifact16-800x140.png 800w" sizes="auto, (max-width: 1341px) 100vw, 1341px" /></a><p id="caption-attachment-117640" class="wp-caption-text">Suspicious files identification</p></div>
  1334. <p>Malicious files usually do not include any publisher information and are definitely not part of the default operating system. For this reason, AmCache-EvilHunter also ships with the <code>--missing-publisher</code> and <code>--exclude-os options</code>. These parameters allow for easy filtering of suspicious binaries and also allow fast threat intelligence gathering, which is crucial during an incident.</p>
  1335. <p>Another important feature that distinguishes our tool from other proposed approaches is that AmCache-EvilHunter can query Kaspersky OpenTIP (<code>--opentip</code> ) and VirusTotal (<code>--vt</code>) for hashes it identifies. In this way, analysts can rapidly gain insights into samples to decide whether they are going to proceed with a full analysis of the artifact or not.</p>
  1336. <div id="attachment_117641" style="width: 1349px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213952/amcache-forensic-artifact17.jpeg" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117641" class="size-full wp-image-117641" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213952/amcache-forensic-artifact17.jpeg" alt="Threat intel lookup" width="1339" height="182" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213952/amcache-forensic-artifact17.jpeg 1339w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213952/amcache-forensic-artifact17-300x41.jpeg 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213952/amcache-forensic-artifact17-1024x139.jpeg 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213952/amcache-forensic-artifact17-768x104.jpeg 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213952/amcache-forensic-artifact17-740x101.jpeg 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/30213952/amcache-forensic-artifact17-800x109.jpeg 800w" sizes="auto, (max-width: 1339px) 100vw, 1339px" /></a><p id="caption-attachment-117641" class="wp-caption-text">Threat intel lookup</p></div>
  1337. <p>Binaries of the tool are available on <a href="https://github.com/cristianzsh/amcache-evilhunter/releases/" target="_blank" rel="noopener">our GitHub page</a> for both Linux and Windows systems.</p>
  1338. <h2 id="conclusion">Conclusion</h2>
  1339. <p><code>Amcache.hve</code> is a cornerstone of Windows forensics, capturing rich metadata, such as full paths, SHA-1 hashes, compilation timestamps, publisher and version details, for every executable that appears on a system. While it does not serve as a definitive execution log, its strength lies in documenting file presence and paths, making it invaluable for spotting anomalous binaries, verifying trustworthiness via hash lookups against threat‐intelligence feeds, and correlating <code>LinkDate</code> values with known attack campaigns.</p>
  1340. <p>To extract its full investigative potential, analysts should merge AmCache data with other artifacts (e.g., Prefetch, ShimCache, and Windows event logs) to confirm actual execution and build accurate timelines. Comparing <code>InventoryApplicationFile</code> entries against <code>InventoryApplication</code> reveals whether a file was merely dropped or formally installed, and identifying unexpected driver records can expose stealthy rootkits and persistence mechanisms. Leveraging parsers like AmCache-EvilHunter and cross-referencing against VirusTotal or proprietary threat databases allows IOC generation and robust incident response, making AmCache analysis a fundamental DFIR skill.</p>
  1341. ]]></content:encoded>
  1342. <wfw:commentRss>https://securelist.com/amcache-forensic-artifact/117622/feed/</wfw:commentRss>
  1343. <slash:comments>0</slash:comments>
  1344. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/01111328/SL-AmCache-forensic-artifact-featured.jpg" width="2000" height="955"><media:keywords>full</media:keywords></media:content>
  1345. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/01111328/SL-AmCache-forensic-artifact-featured-1024x489.jpg" width="1024" height="489"><media:keywords>large</media:keywords></media:content>
  1346. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/01111328/SL-AmCache-forensic-artifact-featured-300x143.jpg" width="300" height="143"><media:keywords>medium</media:keywords></media:content>
  1347. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/01111328/SL-AmCache-forensic-artifact-featured-150x150.jpg" width="150" height="150"><media:keywords>thumbnail</media:keywords></media:content>
  1348. </item>
  1349. <item>
  1350. <title>Massive npm infection: the Shai-Hulud worm and patient zero</title>
  1351. <link>https://securelist.com/shai-hulud-worm-infects-500-npm-packages-in-a-supply-chain-attack/117547/</link>
  1352. <comments>https://securelist.com/shai-hulud-worm-infects-500-npm-packages-in-a-supply-chain-attack/117547/#respond</comments>
  1353. <dc:creator><![CDATA[Vladimir Gursky, Dmitry Vinogradov]]></dc:creator>
  1354. <pubDate>Thu, 25 Sep 2025 10:00:12 +0000</pubDate>
  1355. <category><![CDATA[Incidents]]></category>
  1356. <category><![CDATA[Malware descriptions]]></category>
  1357. <category><![CDATA[Malware Technologies]]></category>
  1358. <category><![CDATA[Linux]]></category>
  1359. <category><![CDATA[Microsoft Windows]]></category>
  1360. <category><![CDATA[JavaScript]]></category>
  1361. <category><![CDATA[Apple MacOS]]></category>
  1362. <category><![CDATA[Malware Descriptions]]></category>
  1363. <category><![CDATA[Malware]]></category>
  1364. <category><![CDATA[Worm]]></category>
  1365. <category><![CDATA[Supply-chain attack]]></category>
  1366. <category><![CDATA[Data theft]]></category>
  1367. <category><![CDATA[Open source]]></category>
  1368. <category><![CDATA[GitHub]]></category>
  1369. <category><![CDATA[npm]]></category>
  1370. <category><![CDATA[Windows malware]]></category>
  1371. <category><![CDATA[Unix and macOS malware]]></category>
  1372. <category><![CDATA[Web threats]]></category>
  1373. <guid isPermaLink="false">https://kasperskycontenthub.com/securelist/?p=117547</guid>
  1374.  
  1375. <description><![CDATA[We dissect a recent incident where npm packages with millions of downloads were infected by the Shai-Hulud worm. Kaspersky experts describe the starting point for the source of the infection.]]></description>
  1376. <content:encoded><![CDATA[<p><img width="990" height="400" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/25072805/shai-hulud-featured-image-990x400.jpg" class="attachment-securelist-huge-promo size-securelist-huge-promo wp-post-image" alt="" decoding="async" loading="lazy" /></p><h2 id="introduction">Introduction</h2>
  1377. <p>The modern development world is almost entirely dependent on third-party modules. While this certainly speeds up development, it also creates a massive attack surface for end users, since anyone can create these components. It is no surprise that malicious modules are becoming more common. When a single maintainer account for popular modules or a single popular dependency is compromised, it can quickly turn into a <a href="https://securelist.com/ksb-story-of-the-year-2024/114883/" target="_blank" rel="noopener">supply chain attack</a>. Such compromises are now a frequent attack vector trending among threat actors. In the last month alone, there have been two major incidents that confirm this interest in creating malicious modules, dependencies, and packages. We have already discussed the <a href="https://www.kaspersky.com/blog/npm-packages-trojanized/54280/" target="_blank" rel="noopener">recent compromise</a> of popular npm packages. September 16, 2025 saw <a href="https://www.kaspersky.com/blog/tinycolor-shai-hulud-supply-chain-attack/54315/" target="_blank" rel="noopener">reports</a> of a new wave of npm package infections, caused by the self-propagating malware known as Shai-Hulud.</p>
  1378. <p>Shai-Hulud is designed to steal sensitive data, expose private repositories of organizations, and hijack victim credentials to infect other packages and spread on. Over 500 packages were infected in this incident, including one with more than two million weekly downloads. As a result, developers who integrated these malicious packages into their projects risk losing sensitive data, and their own libraries could become infected with Shai-Hulud. This self-propagating malware takes over accounts and steals secrets to create new infected modules, spreading the threat along the dependency chain.</p>
  1379. <h2 id="technical-details">Technical details</h2>
  1380. <p>The worm&#8217;s malicious code executes when an infected package is installed. It then publishes infected releases to all packages the victim has update permissions for.</p>
  1381. <p>Once the infected package is installed from the npm registry on the victim&#8217;s system, a special command is automatically executed. This command launches a malicious script over 3 MB in size named <code>bundle.js</code>, which contains several legitimate, open-source work modules.</p>
  1382. <p>Key modules within <code>bundle.js</code> include:</p>
  1383. <ul>
  1384. <li>Library for interacting with AWS cloud services</li>
  1385. <li>GCP module that retrieves metadata from the Google Cloud Platform environment</li>
  1386. <li>Functions for <a href="https://github.com/trufflesecurity/trufflehog" target="_blank" rel="noopener">TruffleHog</a>, a tool for scanning various data sources to find sensitive information, specifically secrets</li>
  1387. <li>Tool for interacting with the GitHub API</li>
  1388. </ul>
  1389. <p>The JavaScript file also contains network utilities for data transfer and the main operational module, Shai-Hulud.</p>
  1390. <p>The worm begins its malicious activity by collecting information about the victim&#8217;s operating system and checking for an npm token and authenticated GitHub user token in the environment. If a valid GitHub token is not present, <code>bundle.js</code> will terminate. A distinctive feature of Shai-Hulud is that most of its functionality is geared toward Linux and macOS systems: almost all malicious actions are performed exclusively on these systems, with the exception of using TruffleHog to find secrets.</p>
  1391. <h3 id="exfiltrating-secrets">Exfiltrating secrets</h3>
  1392. <p>After passing the checks, the malware uses the token mentioned earlier to get information about the current GitHub user. It then runs the <code>extraction</code> function, which creates a temporary executable bash script at <code>/tmp/processor.sh</code> and runs it as a separate process, passing the token as an argument. Below is the <code>extraction</code> function, with strings and variable names modified for readability since the original source code was illegible.</p>
  1393. <div id="attachment_117553" style="width: 560px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155009/shai-hulud1.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117553" class="size-full wp-image-117553" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155009/shai-hulud1.png" alt="The extraction function, formatted for readability" width="550" height="533" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155009/shai-hulud1.png 550w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155009/shai-hulud1-300x291.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155009/shai-hulud1-361x350.png 361w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155009/shai-hulud1-289x280.png 289w" sizes="auto, (max-width: 550px) 100vw, 550px" /></a><p id="caption-attachment-117553" class="wp-caption-text">The extraction function, formatted for readability</p></div>
  1394. <p>The bash script is designed to communicate with the GitHub API and collect secrets from the victim&#8217;s repository in an unconventional way. First, the script checks if the token has the necessary permissions to create branches and work with GitHub Actions. If it does, the script gets a list of all the repositories the user can access from 2025. In each of these, it creates a new branch named <code>shai-hulud</code> and uploads a <code>shai-hulud-workflow.yml</code> <a href="https://docs.github.com/en/actions/concepts/workflows-and-actions/workflows" target="_blank" rel="noopener">workflow</a>, which is a configuration file for describing GitHub Actions workflows. These files are automation scripts that are triggered in GitHub Actions whenever changes are made to a repository. The Shai-Hulud workflow activates on every push.</p>
  1395. <div id="attachment_117554" style="width: 694px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155101/shai-hulud2.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117554" class="size-full wp-image-117554" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155101/shai-hulud2.png" alt="The malicious workflow configuration" width="684" height="233" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155101/shai-hulud2.png 684w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155101/shai-hulud2-300x102.png 300w" sizes="auto, (max-width: 684px) 100vw, 684px" /></a><p id="caption-attachment-117554" class="wp-caption-text">The malicious workflow configuration</p></div>
  1396. <p>This file collects secrets from the victim&#8217;s repositories and forwards them to the attackers&#8217; server. Before being sent, the confidential data is encoded twice with Base64.</p>
  1397. <p>This unusual method for data collection is designed for a one-time extraction of secrets from a user&#8217;s repositories. However, it poses a threat not only to Shai-Hulud victims but also to ordinary researchers. If you search for &#8220;shai-hulud&#8221; on GitHub, you will find numerous repositories that have been compromised by the worm.</p>
  1398. <div id="attachment_117555" style="width: 1160px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155148/shai-hulud3.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117555" class="size-full wp-image-117555" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155148/shai-hulud3.png" alt="Open GitHub repositories compromised by Shai-Hulud" width="1150" height="756" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155148/shai-hulud3.png 1150w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155148/shai-hulud3-300x197.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155148/shai-hulud3-1024x673.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155148/shai-hulud3-768x505.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155148/shai-hulud3-532x350.png 532w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155148/shai-hulud3-740x486.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155148/shai-hulud3-426x280.png 426w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155148/shai-hulud3-800x526.png 800w" sizes="auto, (max-width: 1150px) 100vw, 1150px" /></a><p id="caption-attachment-117555" class="wp-caption-text">Open GitHub repositories compromised by Shai-Hulud</p></div>
  1399. <p>The main <code>bundle.js</code> script then requests a list of all organizations associated with the victim and runs the migration function for each one. This function also runs a bash script, but in this case, it saves it to <code>/tmp/migrate-repos.sh</code>, passing the organization name, username, and token as parameters for further malicious activity.</p>
  1400. <p>The bash script automates the migration of all private and internal repositories from the specified GitHub organization to the user&#8217;s account, making them public. The script also uses the GitHub API to copy the contents of the private repositories as <a href="https://docs.github.com/en/repositories/creating-and-managing-repositories/duplicating-a-repository" target="_blank" rel="noopener">mirrors</a>.</p>
  1401. <p>We believe these actions are intended for the automated theft of source code from the private repositories of popular communities and organizations. For example, the well-known company CrowdStrike was caught in this wave of infections.</p>
  1402. <h3 id="the-worms-self-replication">The worm&#8217;s self-replication</h3>
  1403. <p>After running operations on the victim&#8217;s GitHub, the main <code>bundle.js</code> script moves on to its next crucial stage: self-replication. First, the script gets a list of the victim&#8217;s 20 most downloaded packages. To do this, it performs a search query with the username from the previously obtained npm token:</p><pre class="urvanov-syntax-highlighter-plain-tag">https://registry.npmjs.org/-/v1/search?text=maintainer:{%user_details%}&amp;size=20</pre><p> </p>
  1404. <p>Next, for each of the packages it finds, it calls the <code>updatePackage</code> function. This function first attempts to download the tarball version of the package (a <code>.TAR</code> archive). If it exists, a temporary directory named <code>npm-update-{target_package_name}</code> is created. The tarball version of the package is saved there as <code>package.tgz</code>, then unpacked and modified as follows:</p>
  1405. <ul>
  1406. <li>The malicious <code>bundle.js</code> is added to the original package.</li>
  1407. <li>A postinstall command is added to the <code>package.json</code> file (which is used in Node.js projects to manage dependencies and project metadata). This command is configured to execute the malicious script via <code>node bundle.js</code>.</li>
  1408. <li>The package version number is incremented by 1.</li>
  1409. </ul>
  1410. <p>The modified package is then re-packed and published to npm as a new version with the <code>npm publish</code> command. After this, the temporary directory for the package is cleared.</p>
  1411. <div id="attachment_117556" style="width: 687px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155303/shai-hulud4.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117556" class="size-full wp-image-117556" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155303/shai-hulud4.png" alt="The updatePackage function, formatted for readability" width="677" height="771" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155303/shai-hulud4.png 677w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155303/shai-hulud4-263x300.png 263w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155303/shai-hulud4-307x350.png 307w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/24155303/shai-hulud4-246x280.png 246w" sizes="auto, (max-width: 677px) 100vw, 677px" /></a><p id="caption-attachment-117556" class="wp-caption-text">The updatePackage function, formatted for readability</p></div>
  1412. <h3 id="uploading-secrets-to-github">Uploading secrets to GitHub</h3>
  1413. <p>Next, the worm uses the previously mentioned TruffleHog utility to harvest secrets from the target system. It downloads the latest version of the utility from the original repository for the specific operating system type using the following link:</p><pre class="urvanov-syntax-highlighter-plain-tag">https://github.com/trufflesecurity/trufflehog/releases/download/{utility version}/{OS-specific file}</pre><p> </p>
  1414. <p>The worm also uses modules for AWS and Google Cloud Platform (GCP) to scan for secrets. The script then aggregates the collected data into a single object and creates a repository named &#8220;Shai-Hulud&#8221; in the victim&#8217;s profile. It then uploads the collected information to this repository as a <code>data.json</code> file.</p>
  1415. <p>Below is a list of data formats collected from the victim&#8217;s system and uploaded to GitHub:</p><pre class="urvanov-syntax-highlighter-plain-tag">{
  1416. "application": {
  1417.  "name": "",
  1418.  "version": "",
  1419.  "description": ""
  1420. },
  1421. "system": {
  1422.  "platform": "",
  1423.  "architecture": "",
  1424.  "platformDetailed": "",
  1425.  "architectureDetailed": ""
  1426. },
  1427. "runtime": {
  1428.  "nodeVersion": "",
  1429.  "platform": "",
  1430.  "architecture": "",
  1431.  "timestamp": ""
  1432. },
  1433. "environment": {
  1434. },
  1435. "modules": {
  1436.  "github": {
  1437.   "authenticated": false,
  1438.   "token": "",
  1439.   "username": {}
  1440.  },
  1441.  "aws": {
  1442.   "secrets": []
  1443.  },
  1444.  "gcp": {
  1445.   "secrets": []
  1446.  },
  1447.  "truffleHog": {
  1448.   "available": false,
  1449.   "installed": false,
  1450.   "version": "",
  1451.   "platform": "",
  1452.   "results": [
  1453.    {}
  1454.   ]
  1455.  },
  1456.  "npm": {
  1457.   "token": "",
  1458.   "authenticated": true,
  1459.   "username": ""
  1460.  }
  1461. }
  1462. }</pre><p>
  1463. <h3 id="infection-characteristics">Infection characteristics</h3>
  1464. <p>A distinctive characteristic of the modified packages is that they contain an archive named <code>package.tar</code>. This is worth noting because packages usually contain an archive with a name that matches the package itself.</p>
  1465. <p>Through our research, we were able to identify the first package from which Shai-Hulud began to spread, thanks to a key difference. As we mentioned earlier, after infection, a postinstall command to execute the malicious script, <code>node bundle.js</code>, is written to the <code>package.json</code> file. This command typically runs immediately after installation. However, we discovered that one of the infected packages listed the same command as a preinstall command, meaning it ran before the installation. This package was <strong>ngx-bootstrap version 18.1.4</strong>. We believe this was the starting point for the spread of this infection. This hypothesis is further supported by the fact that the archive name in the first infected version of this package differed from the name characteristic of later infected packages (<code>package.tar</code>).</p>
  1466. <p>While investigating different packages, we noticed that in some cases, a single package contained multiple versions with malicious code. This was likely possible because the infection spread to all maintainers and contributors of packages, and the malicious code was then introduced from each of their accounts.</p>
  1467. <h2 id="infected-libraries-and-crowdstrike">Infected libraries and CrowdStrike</h2>
  1468. <p>The rapidly spreading Shai-Hulud worm has infected many popular libraries that organizations and developers use daily. Shai-Hulud has infected over 500 popular packages in recent days, including libraries from the well-known company CrowdStrike.<br />
  1469. Among the infected libraries were the following:</p>
  1470. <ul>
  1471. <li>@crowdstrike/commitlint versions 8.1.1, 8.1.2</li>
  1472. <li>@crowdstrike/falcon-shoelace versions 0.4.1, 0.4.2</li>
  1473. <li>@crowdstrike/foundry-js versions 0.19.1, 0.19.2</li>
  1474. <li>@crowdstrike/glide-core versions 0.34.2, 0.34.3</li>
  1475. <li>@crowdstrike/logscale-dashboard versions 1.205.1, 1.205.2</li>
  1476. <li>@crowdstrike/logscale-file-editor versions 1.205.1, 1.205.2</li>
  1477. <li>@crowdstrike/logscale-parser-edit versions 1.205.1, 1.205.2</li>
  1478. <li>@crowdstrike/logscale-search versions 1.205.1, 1.205.2</li>
  1479. <li>@crowdstrike/tailwind-toucan-base versions 5.0.1, 5.0.2</li>
  1480. </ul>
  1481. <p>But the event that has drawn significant attention to this spreading threat was the infection of the @ctrl/tinycolor library, which is downloaded by over two million users every week.</p>
  1482. <p>As mentioned above, the malicious script exposes an organization&#8217;s private repositories, posing a serious threat to their owners, as this creates a risk of exposing the source code of their libraries and products, among other things, and leading to an even greater loss of data.</p>
  1483. <h2 id="prevention-and-protection">Prevention and protection</h2>
  1484. <p>To protect against this type of infection, we recommend using a specialized solution for monitoring open-source components. Kaspersky maintains a <a href="https://www.kaspersky.com/open-source-feed?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______9cfe10194bda62de" target="_blank" rel="noopener">continuous feed of compromised packages and libraries</a>, which can be used to secure your supply chain and protect development from similar threats.</p>
  1485. <p>For personal devices, we recommend <a href="https://www.kaspersky.com/premium?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team___kprem____311534b86c615e6e" target="_blank" rel="noopener">Kaspersky Premium</a>, which provides multi-layered protection to prevent and neutralize infection threats. Our solution can also restore the device&#8217;s functionality if it&#8217;s infected with malware.</p>
  1486. <p>For corporate devices, we advise implementing a comprehensive solution like <a href="https://www.kaspersky.com/enterprise-security/xdr?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team___xdr____33801aaaec3e63b3" target="_blank" rel="noopener">Kaspersky Next</a>, which allows you to build a flexible and effective security system. This product line provides threat visibility and real-time protection, as well as EDR and XDR capabilities for investigation and response. It is suitable for organizations of any scale or industry.</p>
  1487. <p>Kaspersky products detect the Shai-Hulud threat as <code>HEUR:Worm.Script.Shulud.gen</code>.</p>
  1488. <p>In the event of a Shai-Hulud infection, and as a proactive response to the spreading threat, we recommend taking the following measures across your systems and infrastructure:</p>
  1489. <ul>
  1490. <li>Use a reliable security solution to conduct a full system scan.</li>
  1491. <li>Audit your GitHub repositories:</li>
  1492. <ul>
  1493. <li>Check for repositories named <code>shai-hulud</code>.</li>
  1494. <li>Look for non-trivial or unknown branches, pull requests, and files.</li>
  1495. <li>Audit GitHub Actions logs for strings containing <code>shai-hulud</code>.</li>
  1496. </ul>
  1497. <li>Reissue npm and GitHub tokens, cloud keys (specifically for AWS and Google Cloud Platform), and rotate other secrets.</li>
  1498. <li>Clear the cache and inventory your npm modules: check for malicious ones and roll back versions to clean ones.</li>
  1499. <li>Check for indicators of compromise, such as files in the system or network artifacts.</li>
  1500. </ul>
  1501. <h2 id="indicators-of-compromise">Indicators of compromise</h2>
  1502. <p><strong>Files:</strong><br />
  1503. bundle.js<br />
  1504. shai-hulud-workflow.yml</p>
  1505. <p><strong>Strings:</strong><br />
  1506. shai-hulud</p>
  1507. <p><strong>Hashes:</strong><br />
  1508. <a href="https://opentip.kaspersky.com/c96fbbe010dd4c5bfb801780856ec228/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______b82fb35982be9fef&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">C96FBBE010DD4C5BFB801780856EC228</a><br />
  1509. <a href="https://opentip.kaspersky.com/78e701f42b76ccde3f2678e548886860/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______2bd661a09cbb2bbb&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">78E701F42B76CCDE3F2678E548886860</a></p>
  1510. <p><strong>Network artifacts:</strong><br />
  1511. <a href="https://opentip.kaspersky.com/https%3a%2f%2fwebhook.site%2fbb8ca5f6-4175-45d2-b042-fc9ebb8170b7/?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______9bd279cc4ffc602e&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">https://webhook.site/bb8ca5f6-4175-45d2-b042-fc9ebb8170b7</a></p>
  1512. <p><strong>Compromised packages:</strong><br />
  1513. @ahmedhfarag/ngx-perfect-scrollbar<br />
  1514. @ahmedhfarag/ngx-virtual-scroller<br />
  1515. @art-ws/common<br />
  1516. @art-ws/config-eslint<br />
  1517. @art-ws/config-ts<br />
  1518. @art-ws/db-context<br />
  1519. @art-ws/di<br />
  1520. @art-ws/di-node<br />
  1521. @art-ws/eslint<br />
  1522. @art-ws/fastify-http-server<br />
  1523. @art-ws/http-server<br />
  1524. @art-ws/openapi<br />
  1525. @art-ws/package-base<br />
  1526. @art-ws/prettier<br />
  1527. @art-ws/slf<br />
  1528. @art-ws/ssl-info<br />
  1529. @art-ws/web-app<br />
  1530. @basic-ui-components-stc/basic-ui-components<br />
  1531. @crowdstrike/commitlint<br />
  1532. @crowdstrike/falcon-shoelace<br />
  1533. @crowdstrike/foundry-js<br />
  1534. @crowdstrike/glide-core<br />
  1535. @crowdstrike/logscale-dashboard<br />
  1536. @crowdstrike/logscale-file-editor<br />
  1537. @crowdstrike/logscale-parser-edit<br />
  1538. @crowdstrike/logscale-search<br />
  1539. @crowdstrike/tailwind-toucan-base<br />
  1540. @ctrl/deluge<br />
  1541. @ctrl/golang-template<br />
  1542. @ctrl/magnet-link<br />
  1543. @ctrl/ngx-codemirror<br />
  1544. @ctrl/ngx-csv<br />
  1545. @ctrl/ngx-emoji-mart<br />
  1546. @ctrl/ngx-rightclick<br />
  1547. @ctrl/qbittorrent<br />
  1548. @ctrl/react-adsense<br />
  1549. @ctrl/shared-torrent<br />
  1550. @ctrl/tinycolor<br />
  1551. @ctrl/torrent-file<br />
  1552. @ctrl/transmission<br />
  1553. @ctrl/ts-base32<br />
  1554. @nativescript-community/arraybuffers<br />
  1555. @nativescript-community/gesturehandler<br />
  1556. @nativescript-community/perms<br />
  1557. @nativescript-community/sentry<br />
  1558. @nativescript-community/sqlite<br />
  1559. @nativescript-community/text<br />
  1560. @nativescript-community/typeorm<br />
  1561. @nativescript-community/ui-collectionview<br />
  1562. @nativescript-community/ui-document-picker<br />
  1563. @nativescript-community/ui-drawer<br />
  1564. @nativescript-community/ui-image<br />
  1565. @nativescript-community/ui-label<br />
  1566. @nativescript-community/ui-material-bottom-navigation<br />
  1567. @nativescript-community/ui-material-bottomsheet<br />
  1568. @nativescript-community/ui-material-core<br />
  1569. @nativescript-community/ui-material-core-tabs<br />
  1570. @nativescript-community/ui-material-ripple<br />
  1571. @nativescript-community/ui-material-tabs<br />
  1572. @nativescript-community/ui-pager<br />
  1573. @nativescript-community/ui-pulltorefresh<br />
  1574. @nstudio/angular<br />
  1575. @nstudio/focus<br />
  1576. @nstudio/nativescript-checkbox<br />
  1577. @nstudio/nativescript-loading-indicator<br />
  1578. @nstudio/ui-collectionview<br />
  1579. @nstudio/web<br />
  1580. @nstudio/web-angular<br />
  1581. @nstudio/xplat<br />
  1582. @nstudio/xplat-utils<br />
  1583. @operato/board<br />
  1584. @operato/data-grist<br />
  1585. @operato/graphql<br />
  1586. @operato/headroom<br />
  1587. @operato/help<br />
  1588. @operato/i18n<br />
  1589. @operato/input<br />
  1590. @operato/layout<br />
  1591. @operato/popup<br />
  1592. @operato/pull-to-refresh<br />
  1593. @operato/shell<br />
  1594. @operato/styles<br />
  1595. @operato/utils<br />
  1596. @teselagen/bio-parsers<br />
  1597. @teselagen/bounce-loader<br />
  1598. @teselagen/file-utils<br />
  1599. @teselagen/liquibase-tools<br />
  1600. @teselagen/ove<br />
  1601. @teselagen/range-utils<br />
  1602. @teselagen/react-list<br />
  1603. @teselagen/react-table<br />
  1604. @teselagen/sequence-utils<br />
  1605. @teselagen/ui<br />
  1606. @thangved/callback-window<br />
  1607. @things-factory/attachment-base<br />
  1608. @things-factory/auth-base<br />
  1609. @things-factory/email-base<br />
  1610. @things-factory/env<br />
  1611. @things-factory/integration-base<br />
  1612. @things-factory/integration-marketplace<br />
  1613. @things-factory/shell<br />
  1614. @tnf-dev/api<br />
  1615. @tnf-dev/core<br />
  1616. @tnf-dev/js<br />
  1617. @tnf-dev/mui<br />
  1618. @tnf-dev/react<br />
  1619. @ui-ux-gang/devextreme-angular-rpk<br />
  1620. @ui-ux-gang/devextreme-rpk<br />
  1621. @yoobic/design-system<br />
  1622. @yoobic/jpeg-camera-es6<br />
  1623. @yoobic/yobi<br />
  1624. ace-colorpicker-rpk<br />
  1625. airchief<br />
  1626. airpilot<br />
  1627. angulartics2<br />
  1628. another-shai<br />
  1629. browser-webdriver-downloader<br />
  1630. capacitor-notificationhandler<br />
  1631. capacitor-plugin-healthapp<br />
  1632. capacitor-plugin-ihealth<br />
  1633. capacitor-plugin-vonage<br />
  1634. capacitorandroidpermissions<br />
  1635. config-cordova<br />
  1636. cordova-plugin-voxeet2<br />
  1637. cordova-voxeet<br />
  1638. create-hest-app<br />
  1639. db-evo<br />
  1640. devextreme-angular-rpk<br />
  1641. devextreme-rpk<br />
  1642. ember-browser-services<br />
  1643. ember-headless-form<br />
  1644. ember-headless-form-yup<br />
  1645. ember-headless-table<br />
  1646. ember-url-hash-polyfill<br />
  1647. ember-velcro<br />
  1648. encounter-playground<br />
  1649. eslint-config-crowdstrike<br />
  1650. eslint-config-crowdstrike-node<br />
  1651. eslint-config-teselagen<br />
  1652. globalize-rpk<br />
  1653. graphql-sequelize-teselagen<br />
  1654. json-rules-engine-simplified<br />
  1655. jumpgate<br />
  1656. koa2-swagger-ui<br />
  1657. mcfly-semantic-release<br />
  1658. mcp-knowledge-base<br />
  1659. mcp-knowledge-graph<br />
  1660. mobioffice-cli<br />
  1661. monorepo-next<br />
  1662. mstate-angular<br />
  1663. mstate-cli<br />
  1664. mstate-dev-react<br />
  1665. mstate-react<br />
  1666. ng-imports-checker<br />
  1667. ng2-file-upload<br />
  1668. ngx-bootstrap<br />
  1669. ngx-color<br />
  1670. ngx-toastr<br />
  1671. ngx-trend<br />
  1672. ngx-ws<br />
  1673. oradm-to-gql<br />
  1674. oradm-to-sqlz<br />
  1675. ove-auto-annotate<br />
  1676. pm2-gelf-json<br />
  1677. printjs-rpk<br />
  1678. react-complaint-image<br />
  1679. react-jsonschema-form-conditionals<br />
  1680. react-jsonschema-form-extras<br />
  1681. react-jsonschema-rxnt-extras<br />
  1682. remark-preset-lint-crowdstrike<br />
  1683. rxnt-authentication<br />
  1684. rxnt-healthchecks-nestjs<br />
  1685. rxnt-kue<br />
  1686. swc-plugin-component-annotate<br />
  1687. tbssnch<br />
  1688. teselagen-interval-tree<br />
  1689. tg-client-query-builder<br />
  1690. tg-redbird<br />
  1691. tg-seq-gen<br />
  1692. thangved-react-grid<br />
  1693. ts-gaussian<br />
  1694. ts-imports<br />
  1695. tvi-cli<br />
  1696. ve-bamreader<br />
  1697. ve-editor<br />
  1698. verror-extra<br />
  1699. voip-callkit<br />
  1700. wdio-web-reporter<br />
  1701. yargs-help-output<br />
  1702. yoo-styles</p>
  1703. ]]></content:encoded>
  1704. <wfw:commentRss>https://securelist.com/shai-hulud-worm-infects-500-npm-packages-in-a-supply-chain-attack/117547/feed/</wfw:commentRss>
  1705. <slash:comments>0</slash:comments>
  1706. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/25072805/shai-hulud-featured-image.jpg" width="2000" height="1000"><media:keywords>full</media:keywords></media:content>
  1707. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/25072805/shai-hulud-featured-image-1024x512.jpg" width="1024" height="512"><media:keywords>large</media:keywords></media:content>
  1708. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/25072805/shai-hulud-featured-image-300x150.jpg" width="300" height="150"><media:keywords>medium</media:keywords></media:content>
  1709. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/25072805/shai-hulud-featured-image-150x150.jpg" width="150" height="150"><media:keywords>thumbnail</media:keywords></media:content>
  1710. </item>
  1711. <item>
  1712. <title>Threat landscape for industrial automation systems in Q2 2025</title>
  1713. <link>https://securelist.com/industrial-threat-report-q2-2025/117532/</link>
  1714. <comments>https://securelist.com/industrial-threat-report-q2-2025/117532/#respond</comments>
  1715. <dc:creator><![CDATA[Kaspersky ICS CERT]]></dc:creator>
  1716. <pubDate>Fri, 19 Sep 2025 10:00:56 +0000</pubDate>
  1717. <category><![CDATA[Industrial threats]]></category>
  1718. <category><![CDATA[Malware Statistics]]></category>
  1719. <category><![CDATA[Industrial control systems]]></category>
  1720. <category><![CDATA[Ransomware]]></category>
  1721. <category><![CDATA[Spyware]]></category>
  1722. <category><![CDATA[Malware]]></category>
  1723. <category><![CDATA[Worm]]></category>
  1724. <category><![CDATA[Miner]]></category>
  1725. <category><![CDATA[Virus]]></category>
  1726. <category><![CDATA[Industrial threats]]></category>
  1727. <guid isPermaLink="false">https://kasperskycontenthub.com/securelist/?p=117532</guid>
  1728.  
  1729. <description><![CDATA[Kaspersky industrial threat report contains statistics on various malicious objects detected and blocked on ICS computers by Kaspersky solutions in Q2 2025.]]></description>
  1730. <content:encoded><![CDATA[<p><img width="990" height="400" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/19094238/SL-ICS-CERT-Q2-2025-report-featured-990x400.jpg" class="attachment-securelist-huge-promo size-securelist-huge-promo wp-post-image" alt="" decoding="async" loading="lazy" /></p><h2 id="statistics-across-all-threats">Statistics across all threats</h2>
  1731. <p>In Q2 2025, the percentage of ICS computers on which malicious objects were blocked decreased by 1.4 pp from the previous quarter to 20.5%.</p>
  1732. <div id="attachment_117533" style="width: 897px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18122930/report-q2-20251.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117533" class="size-full wp-image-117533" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18122930/report-q2-20251.png" alt="Percentage of ICS computers on which malicious objects were blocked, Q2 2022–Q2 2025" width="887" height="331" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18122930/report-q2-20251.png 887w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18122930/report-q2-20251-300x112.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18122930/report-q2-20251-768x287.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18122930/report-q2-20251-740x276.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18122930/report-q2-20251-750x280.png 750w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18122930/report-q2-20251-800x299.png 800w" sizes="auto, (max-width: 887px) 100vw, 887px" /></a><p id="caption-attachment-117533" class="wp-caption-text">Percentage of ICS computers on which malicious objects were blocked, Q2 2022–Q2 2025</p></div>
  1733. <p>Compared to Q2 2024, the rate decreased by 3.0 pp.</p>
  1734. <p>Regionally, the percentage of ICS computers on which malicious objects were blocked ranged from 11.2% in Northern Europe to 27.8% in Africa.</p>
  1735. <div id="attachment_117534" style="width: 882px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123104/report-q2-20252.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117534" class="size-full wp-image-117534" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123104/report-q2-20252.png" alt="Regions ranked by percentage of ICS computers on which malicious objects were blocked" width="872" height="1076" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123104/report-q2-20252.png 872w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123104/report-q2-20252-243x300.png 243w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123104/report-q2-20252-830x1024.png 830w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123104/report-q2-20252-768x948.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123104/report-q2-20252-284x350.png 284w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123104/report-q2-20252-740x913.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123104/report-q2-20252-227x280.png 227w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123104/report-q2-20252-729x900.png 729w" sizes="auto, (max-width: 872px) 100vw, 872px" /></a><p id="caption-attachment-117534" class="wp-caption-text">Regions ranked by percentage of ICS computers on which malicious objects were blocked</p></div>
  1736. <p>In most of the regions surveyed in this report, the figures decreased from the previous quarter. They increased only in Australia and New Zealand, as well as Northern Europe.</p>
  1737. <div id="attachment_117535" style="width: 886px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123404/report-q2-20253.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117535" class="size-full wp-image-117535" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123404/report-q2-20253.png" alt="Changes in percentage of ICS computers on which malicious objects were blocked, Q2 2025" width="876" height="568" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123404/report-q2-20253.png 876w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123404/report-q2-20253-300x195.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123404/report-q2-20253-768x498.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123404/report-q2-20253-540x350.png 540w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123404/report-q2-20253-740x480.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123404/report-q2-20253-432x280.png 432w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123404/report-q2-20253-800x519.png 800w" sizes="auto, (max-width: 876px) 100vw, 876px" /></a><p id="caption-attachment-117535" class="wp-caption-text">Changes in percentage of ICS computers on which malicious objects were blocked, Q2 2025</p></div>
  1738. <h2 id="selected-industries">Selected industries</h2>
  1739. <p>The biometrics sector led the ranking of the industries and OT infrastructures surveyed in this report in terms of the percentage of ICS computers on which malicious objects were blocked.</p>
  1740. <div id="attachment_117536" style="width: 892px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123539/report-q2-20254.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117536" class="size-full wp-image-117536" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123539/report-q2-20254.png" alt="Ranking of industries and OT infrastructures by percentage of ICS computers on which malicious objects were blocked" width="882" height="733" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123539/report-q2-20254.png 882w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123539/report-q2-20254-300x249.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123539/report-q2-20254-768x638.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123539/report-q2-20254-421x350.png 421w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123539/report-q2-20254-740x615.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123539/report-q2-20254-337x280.png 337w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123539/report-q2-20254-800x665.png 800w" sizes="auto, (max-width: 882px) 100vw, 882px" /></a><p id="caption-attachment-117536" class="wp-caption-text">Ranking of industries and OT infrastructures by percentage of ICS computers on which malicious objects were blocked</p></div>
  1741. <p>In Q2 2025, the percentage of ICS computers on which malicious objects were blocked decreased across all industries.</p>
  1742. <div id="attachment_117537" style="width: 1057px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123627/report-q2-20255.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117537" class="size-full wp-image-117537" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123627/report-q2-20255.png" alt="Percentage of ICS computers on which malicious objects were blocked in selected industries" width="1047" height="481" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123627/report-q2-20255.png 1047w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123627/report-q2-20255-300x138.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123627/report-q2-20255-1024x470.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123627/report-q2-20255-768x353.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123627/report-q2-20255-762x350.png 762w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123627/report-q2-20255-740x340.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123627/report-q2-20255-609x280.png 609w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123627/report-q2-20255-800x368.png 800w" sizes="auto, (max-width: 1047px) 100vw, 1047px" /></a><p id="caption-attachment-117537" class="wp-caption-text">Percentage of ICS computers on which malicious objects were blocked in selected industries</p></div>
  1743. <h2 id="diversity-of-detected-malicious-objects">Diversity of detected malicious objects</h2>
  1744. <p>In Q2 2025, Kaspersky security solutions blocked malware from 10,408 different malware families from various categories on industrial automation systems.</p>
  1745. <div id="attachment_117538" style="width: 1063px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123820/report-q2-20256.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117538" class="size-full wp-image-117538" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123820/report-q2-20256.png" alt="Percentage of ICS computers on which the activity of malicious objects from various categories was blocked" width="1053" height="841" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123820/report-q2-20256.png 1053w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123820/report-q2-20256-300x240.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123820/report-q2-20256-1024x818.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123820/report-q2-20256-768x613.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123820/report-q2-20256-500x400.png 500w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123820/report-q2-20256-438x350.png 438w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123820/report-q2-20256-740x591.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123820/report-q2-20256-351x280.png 351w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123820/report-q2-20256-800x639.png 800w" sizes="auto, (max-width: 1053px) 100vw, 1053px" /></a><p id="caption-attachment-117538" class="wp-caption-text">Percentage of ICS computers on which the activity of malicious objects from various categories was blocked</p></div>
  1746. <p>The only increases were in the percentages of ICS computers on which denylisted internet resources (1.2 times more than in the previous quarter) and malicious documents (1.1 times more) were blocked.</p>
  1747. <h2 id="main-threat-sources">Main threat sources</h2>
  1748. <p>Depending on the threat detection and blocking scenario, it is not always possible to reliably identify the source. The circumstantial evidence for a specific source can be the blocked threat&#8217;s type (category).</p>
  1749. <p>The internet (visiting malicious or compromised internet resources; malicious content distributed via messengers; cloud data storage and processing services and CDNs), email clients (phishing emails), and removable storage devices remain the primary sources of threats to computers in an organization&#8217;s technology infrastructure.</p>
  1750. <p>In Q2 2025, the percentage of ICS computers on which threats from email clients were blocked continued to increase. The main categories of threats from email clients blocked on ICS computers are malicious documents, spyware, malicious scripts and phishing pages. The indicator increased in all regions except Russia. By contrast, the global average for other threat sources decreased. Moreover, the rates reached their lowest levels since Q2 2022.</p>
  1751. <div id="attachment_117539" style="width: 927px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123941/report-q2-20257.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117539" class="size-full wp-image-117539" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123941/report-q2-20257.png" alt="Percentage of ICS computers on which malicious objects from various sources were blocked" width="917" height="389" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123941/report-q2-20257.png 917w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123941/report-q2-20257-300x127.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123941/report-q2-20257-768x326.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123941/report-q2-20257-825x350.png 825w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123941/report-q2-20257-740x314.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123941/report-q2-20257-660x280.png 660w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18123941/report-q2-20257-800x339.png 800w" sizes="auto, (max-width: 917px) 100vw, 917px" /></a><p id="caption-attachment-117539" class="wp-caption-text">Percentage of ICS computers on which malicious objects from various sources were blocked</p></div>
  1752. <p>The same computer can be attacked by several categories of malware from the same source during a quarter. That computer is counted when calculating the percentage of attacked computers for each threat category, but is only counted once for the threat source (we count unique attacked computers). In addition, it is not always possible to accurately determine the initial infection attempt. Therefore, the total percentage of ICS computers on which various categories of threats from a certain source were blocked exceeds the percentage of threats from the source itself.</p>
  1753. <p>The rates for all threat sources varied across the monitored regions.</p>
  1754. <ul>
  1755. <li>The percentage of ICS computers on which threats from the internet were blocked ranged from 6.35% in East Asia to 11.88% in Africa</li>
  1756. <li>The percentage of ICS computers on which threats from email clients were blocked ranged from 0.80% in Russia to 7.23% in Southern Europe</li>
  1757. <li>The percentage of ICS computers on which threats from removable media were blocked ranged from 0.04% in Australia and New Zealand to 1.77% in Africa</li>
  1758. <li>The percentage of ICS computers on which threats from network folders were blocked ranged from 0.01% in Northern Europe to 0.25% in East Asia</li>
  1759. </ul>
  1760. <h2 id="threat-categories">Threat categories</h2>
  1761. <p>A typical attack blocked within an OT network is a multi-stage process, where each subsequent step by the attackers is aimed at increasing privileges and gaining access to other systems by exploiting the security problems of industrial enterprises, including technological infrastructures.</p>
  1762. <p>It is worth noting that during the attack, intruders often repeat the same steps (TTPs), especially when they use malicious scripts and established communication channels with the management and control infrastructure (C2) to move laterally within the network and advance the attack.</p>
  1763. <h3 id="malicious-objects-used-for-initial-infection">Malicious objects used for initial infection</h3>
  1764. <p>In Q2 2025, the percentage of ICS computers on which denylisted internet resources were blocked increased to 5.91%.</p>
  1765. <div id="attachment_117540" style="width: 896px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18124057/report-q2-20258.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117540" class="size-full wp-image-117540" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18124057/report-q2-20258.png" alt="Percentage of ICS computers on which denylisted internet resources were blocked, Q2 2022–Q2 2025" width="886" height="393" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18124057/report-q2-20258.png 886w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18124057/report-q2-20258-300x133.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18124057/report-q2-20258-768x341.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18124057/report-q2-20258-789x350.png 789w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18124057/report-q2-20258-740x328.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18124057/report-q2-20258-631x280.png 631w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/18124057/report-q2-20258-800x355.png 800w" sizes="auto, (max-width: 886px) 100vw, 886px" /></a><p id="caption-attachment-117540" class="wp-caption-text">Percentage of ICS computers on which denylisted internet resources were blocked, Q2 2022–Q2 2025</p></div>
  1766. <p>The percentage of ICS computers on which denylisted internet resources were blocked ranged from 3.28% in East Asia to 6.98% in Africa. Russia and Eastern Europe were also among the top three regions for this indicator. It increased in all regions and this growth is associated with the addition of direct links to malicious code hosted on popular public websites and file-sharing services.</p>
  1767. <p>The percentage of ICS computers on which malicious documents were blocked has grown for two consecutive quarters. The rate reached 1.97% (up 0.12 pp) and returned to the level seen in Q3 2024. The percentage increased in all regions except Latin America.<br />
  1768. The percentage of ICS computers on which malicious scripts and phishing pages were blocked decreased to 6.49% (down 0.67 pp).</p>
  1769. <h3 id="next-stage-malware">Next-stage malware</h3>
  1770. <p>Malicious objects used to initially infect computers deliver next-stage malware (spyware, ransomware, and miners) to victims&#8217; computers. As a rule, the higher the percentage of ICS computers on which the initial infection malware is blocked, the higher the percentage for next-stage malware.</p>
  1771. <p>In Q2 2025, the percentage of ICS computers on which malicious objects from all categories were blocked decreased. The rates are:</p>
  1772. <ul>
  1773. <li>Spyware: 3.84% (down 0.36 pp);</li>
  1774. <li>Ransomware: 0.14% (down 0.02 pp);</li>
  1775. <li>Miners in the form of executable files for Windows: 0.63% (down 0.15 pp);</li>
  1776. <li>Web miners: 0.30% (down 0.23 pp), its lowest level since Q2 2022.</li>
  1777. </ul>
  1778. <h3 id="self-propagating-malware">Self-propagating malware</h3>
  1779. <p>Self-propagating malware (worms and viruses) is a category unto itself. Worms and virus-infected files were originally used for initial infection, but as botnet functionality evolved, they took on next-stage characteristics.</p>
  1780. <p>To spread across ICS networks, viruses and worms rely on removable media, network folders, infected files including backups, and network attacks on outdated software such as Radmin2.</p>
  1781. <p>In Q2 2025, the percentage of ICS computers on which worms and viruses were blocked decreased to 1.22% (down 0.09 pp) and 1.29% (down 0.24 pp). Both are the lowest values since Q2 2022.</p>
  1782. <h2 id="autocad-malware">AutoCAD malware</h2>
  1783. <p>This category of malware can spread in a variety of ways, so it does not belong to a specific group.</p>
  1784. <p>In Q2 2025, the percentage of ICS computers on which AutoCAD malware was blocked continued to decrease to 0.29% (down 0.05 pp) and reached its lowest level since Q2 2022.</p>
  1785. <p>For more information on industrial threats see <a href="https://ics-cert.kaspersky.com/publications/reports/2025/09/11/threat-landscape-for-industrial-automation-systems-q2-2025/" target="_blank" rel="noopener">the full version of the report</a>.</p>
  1786. ]]></content:encoded>
  1787. <wfw:commentRss>https://securelist.com/industrial-threat-report-q2-2025/117532/feed/</wfw:commentRss>
  1788. <slash:comments>0</slash:comments>
  1789. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/19094238/SL-ICS-CERT-Q2-2025-report-featured.jpg" width="2000" height="1000"><media:keywords>full</media:keywords></media:content>
  1790. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/19094238/SL-ICS-CERT-Q2-2025-report-featured-1024x512.jpg" width="1024" height="512"><media:keywords>large</media:keywords></media:content>
  1791. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/19094238/SL-ICS-CERT-Q2-2025-report-featured-300x150.jpg" width="300" height="150"><media:keywords>medium</media:keywords></media:content>
  1792. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/19094238/SL-ICS-CERT-Q2-2025-report-featured-150x150.jpg" width="150" height="150"><media:keywords>thumbnail</media:keywords></media:content>
  1793. </item>
  1794. <item>
  1795. <title>RevengeHotels: a new wave of attacks leveraging LLMs and VenomRAT</title>
  1796. <link>https://securelist.com/revengehotels-attacks-with-ai-and-venomrat-across-latin-america/117493/</link>
  1797. <comments>https://securelist.com/revengehotels-attacks-with-ai-and-venomrat-across-latin-america/117493/#respond</comments>
  1798. <dc:creator><![CDATA[Lisandro Ubiedo]]></dc:creator>
  1799. <pubDate>Tue, 16 Sep 2025 10:00:41 +0000</pubDate>
  1800. <category><![CDATA[GReAT research]]></category>
  1801. <category><![CDATA[Malware Technologies]]></category>
  1802. <category><![CDATA[Targeted attacks]]></category>
  1803. <category><![CDATA[Malware Descriptions]]></category>
  1804. <category><![CDATA[Malware]]></category>
  1805. <category><![CDATA[RAT Trojan]]></category>
  1806. <category><![CDATA[.NET]]></category>
  1807. <category><![CDATA[PowerShell]]></category>
  1808. <category><![CDATA[Brazil]]></category>
  1809. <category><![CDATA[Data theft]]></category>
  1810. <category><![CDATA[Thematic phishing]]></category>
  1811. <category><![CDATA[LLM]]></category>
  1812. <category><![CDATA[AI]]></category>
  1813. <category><![CDATA[Windows malware]]></category>
  1814. <guid isPermaLink="false">https://kasperskycontenthub.com/securelist/?p=117493</guid>
  1815.  
  1816. <description><![CDATA[Kaspersky GReAT expert takes a closer look at the RevengeHotels threat actor's new campaign, including AI-generated scripts, targeted phishing, and VenomRAT.]]></description>
  1817. <content:encoded><![CDATA[<p><img width="990" height="400" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/15114425/revengehotels-featured-image-990x400.jpg" class="attachment-securelist-huge-promo size-securelist-huge-promo wp-post-image" alt="" decoding="async" loading="lazy" /></p><h2 id="background">Background</h2>
  1818. <p>RevengeHotels, also known as TA558, is a threat group that has been active since 2015, stealing credit card data from hotel guests and travelers. RevengeHotels&#8217; modus operandi involves sending emails with phishing links which redirect victims to websites mimicking document storage. These sites, in turn, download script files to ultimately infect the targeted machines. The final payloads consist of various remote access Trojan (RAT) implants, which enable the threat actor to issue commands for controlling compromised systems, stealing sensitive data, and maintaining persistence, among other malicious activities.</p>
  1819. <p><a href="https://securelist.com/revengehotels/95229/" target="_blank" rel="noopener">In previous campaigns</a>, the group was observed using malicious emails with Word, Excel, or PDF documents attached. Some of them exploited the <a href="https://www.cve.org/CVERecord?id=CVE-2017-0199" target="_blank" rel="noopener">CVE-2017-0199</a> vulnerability, loading Visual Basic Scripting (VBS), or PowerShell scripts to install customized versions of different RAT families, such as RevengeRAT, NanoCoreRAT, NjRAT, 888 RAT, and custom malware named ProCC. These campaigns affected hotels in multiple countries across Latin America, including Brazil, Argentina, Chile, and Mexico, but also hotel front-desks globally, particularly in Russia, Belarus, Turkey, and so on.</p>
  1820. <p>Later, this threat group expanded its arsenal by adding XWorm, a RAT with commands for control, data theft, and persistence, amongst other things. While investigating the campaign that distributed XWorm, we identified high-confidence indicators that RevengeHotels also used the RAT tool named DesckVBRAT in their operations.</p>
  1821. <p>In the summer of 2025, we observed new campaigns targeting the same sector and featuring increasingly sophisticated implants and tools. The threat actors continue to employ phishing emails with invoice themes to deliver VenomRAT implants via JavaScript loaders and PowerShell downloaders. A significant portion of the initial infector and downloader code in this campaign appears to be generated by large language model (LLM) agents. This suggests that the threat actor is now leveraging AI to evolve its capabilities, a trend also reported among other cybercriminal groups.</p>
  1822. <p>The primary targets of these campaigns are Brazilian hotels, although we have also observed attacks directed at Spanish-speaking markets. Through a comprehensive analysis of the attack patterns and the threat actor&#8217;s modus operandi, we have established with high confidence that the responsible actor is indeed RevengeHotels. The consistency of the tactics, techniques, and procedures (TTPs) employed in these attacks aligns with the known behavior of RevengeHotels. The infrastructure used for payload delivery relies on legitimate hosting services, often utilizing Portuguese-themed domain names.</p>
  1823. <h2 id="initial-infection">Initial infection</h2>
  1824. <p>The primary attack vector employed by RevengeHotels is phishing emails with invoicing themes, which urge the recipient to settle overdue payments. These emails are specifically targeted at email addresses associated with hotel reservations. While Portuguese is a common language used in these phishing emails, we have also discovered instances of Spanish-language phishing emails, indicating that the threat actor&#8217;s scope extends beyond Brazilian hospitality establishments and may include targets in Spanish-speaking countries or regions.</p>
  1825. <div id="attachment_117518" style="width: 1613px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/15114710/RevengeHotels-graphics.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117518" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/15114710/RevengeHotels-graphics.png" alt="Example of a phishing email about a booking confirmation" width="1603" height="1002" class="size-full wp-image-117518" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/15114710/RevengeHotels-graphics.png 1603w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/15114710/RevengeHotels-graphics-300x188.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/15114710/RevengeHotels-graphics-1024x640.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/15114710/RevengeHotels-graphics-768x480.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/15114710/RevengeHotels-graphics-1536x960.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/15114710/RevengeHotels-graphics-560x350.png 560w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/15114710/RevengeHotels-graphics-740x463.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/15114710/RevengeHotels-graphics-448x280.png 448w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/15114710/RevengeHotels-graphics-800x500.png 800w" sizes="auto, (max-width: 1603px) 100vw, 1603px" /></a><p id="caption-attachment-117518" class="wp-caption-text">Example of a phishing email about a booking confirmation</p></div>
  1826. <p>In recent instances of these attacks, the themes have shifted from hotel reservations to fake job applications, where attackers sent résumés in an attempt to exploit potential job opportunities at the targeted hotels.</p>
  1827. <h2 id="malicious-implant">Malicious implant</h2>
  1828. <p>The malicious websites, which change with each email, download a WScript JS file upon being visited, triggering the infection process. The filename of the JS file changes with every request. In the case at hand, we analyzed <code>Fat146571.js</code> (fbadfff7b61d820e3632a2f464079e8c), which follows the format <code>Fat\{NUMBER\}.js</code>, where &#8220;Fat&#8221; is the beginning of the Portuguese word &#8220;fatura&#8221;, meaning &#8220;invoice&#8221;.</p>
  1829. <p>The script appears to be generated by a large language model (LLM), as evidenced by its heavily commented code and a format similar to those produced by this type of technology. The primary function of the script is to load subsequent scripts that facilitate the infection.</p>
  1830. <p>A significant portion of the new generation of initial infectors created by RevengeHotels contains code that seems to have been generated by AI. These LLM-generated code segments can be distinguished from the original malicious code by several characteristics, including:</p>
  1831. <ul>
  1832. <li>The cleanliness and organization of the code</li>
  1833. <li>Placeholders, which allow the threat actor to insert their own variables or content</li>
  1834. <li>Detailed comments that accompany almost every action within the code</li>
  1835. <li>A notable lack of obfuscation, which sets these LLM-generated sections apart from the rest of the code</li>
  1836. </ul>
  1837. <div id="attachment_117504" style="width: 1913px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133434/latin-america2.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117504" class="size-full wp-image-117504" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133434/latin-america2.png" alt="AI generated code in a malicious implant as compared to custom code" width="1903" height="2048" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133434/latin-america2.png 1903w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133434/latin-america2-279x300.png 279w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133434/latin-america2-952x1024.png 952w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133434/latin-america2-768x827.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133434/latin-america2-1427x1536.png 1427w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133434/latin-america2-325x350.png 325w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133434/latin-america2-740x796.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133434/latin-america2-260x280.png 260w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133434/latin-america2-800x861.png 800w" sizes="auto, (max-width: 1903px) 100vw, 1903px" /></a><p id="caption-attachment-117504" class="wp-caption-text">AI generated code in a malicious implant as compared to custom code</p></div>
  1838. <h2 id="second-loading-step">Second loading step</h2>
  1839. <p>Upon execution, the loader script, <code>Fat\{NUMBER\}.js</code>, decodes an obfuscated and encoded buffer, which serves as the next step in loading the remaining malicious implants. This buffer is then saved to a PowerShell (PS1) file named <code>SGDoHBZQWpLKXCAoTHXdBGlnQJLZCGBOVGLH_{TIMESTAMP}.ps1</code> (d5f241dee73cffe51897c15f36b713cc), where &#8220;\{TIMESTAMP\}&#8221; is a generated number based on the current execution date and time. This ensures that the filename changes with each infection and is not persistent. Once the script is saved, it is executed three times, after which the loader script exits.</p>
  1840. <p>The script <code>SGDoHBZQWpLKXCAoTHXdBGlnQJLZCGBOVGLH_{TIMESTAMP}.ps1</code> runs a PowerShell command with Base64-encoded code. This code retrieves the <code>cargajecerrr.txt</code> (b1a5dc66f40a38d807ec8350ae89d1e4) file from a remote malicious server and invokes it as PowerShell.</p>
  1841. <p>This downloader, which is lightly obfuscated, is responsible for fetching the remaining files from the malicious server and loading them. Both downloaded files are Base64-encoded and have descriptive names: <code>venumentrada.txt</code> (607f64b56bb3b94ee0009471f1fe9a3c), which can be interpreted as &#8220;VenomRAT entry point&#8221;, and <code>runpe.txt</code> (dbf5afa377e3e761622e5f21af1f09e6), which is named after a malicious tool for in-memory execution. The first file, <code>venumentrada.txt</code>, is a heavily obfuscated loader (MD5 of the decoded file: 91454a68ca3a6ce7cb30c9264a88c0dc) that ensures the second file, a VenomRAT implant (3ac65326f598ee9930031c17ce158d3d), is correctly executed in memory.</p>
  1842. <p>The malicious code also exhibits characteristics consistent with generation by an AI interface, including a coherent code structure, detailed commenting, and explicit variable naming. Moreover, it differs significantly from previous samples, which had a structurally different, more obfuscated nature and lacked comments.</p>
  1843. <h2 id="exploring-venomrat">Exploring VenomRAT</h2>
  1844. <p>VenomRAT, an evolution of the open-source QuasarRAT, <a href="https://www.acronis.com/en-sg/tru/posts/venomrat-a-remote-access-tool-with-dangerous-consequences/" target="_blank" rel="noopener">was first discovered in mid-2020</a> and is offered on the dark web, with a lifetime license costing up to $650. Although the source code of VenomRAT was leaked, it is still being sold and used by threat actors.</p>
  1845. <div id="attachment_117505" style="width: 2058px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133605/latin-america3.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117505" class="size-full wp-image-117505" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133605/latin-america3.png" alt="VenomRAT packages on the dark web" width="2048" height="1104" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133605/latin-america3.png 2048w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133605/latin-america3-300x162.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133605/latin-america3-1024x552.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133605/latin-america3-768x414.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133605/latin-america3-1536x828.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133605/latin-america3-649x350.png 649w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133605/latin-america3-740x399.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133605/latin-america3-519x280.png 519w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11133605/latin-america3-800x431.png 800w" sizes="auto, (max-width: 2048px) 100vw, 2048px" /></a><p id="caption-attachment-117505" class="wp-caption-text">VenomRAT packages on the dark web</p></div>
  1846. <p>According to the vendor&#8217;s website, VenomRAT offers a range of capabilities that build upon and expand those of QuasarRAT, including HVNC hidden desktop, file grabber and stealer, reverse proxy, and UAC exploit, amongst others.</p>
  1847. <p>As with other RATs, VenomRAT clients are generated with custom configurations. The configuration data within the implant (similar to QuasarRAT) is encrypted using AES and PKCS #5 v2.0, with two keys employed: one for decrypting the data and another for verifying its authenticity using HMAC-SHA256. Throughout the malware code, different sets of keys and initialization vectors are used sporadically, but they consistently implement the same AES algorithm.</p>
  1848. <h3 id="anti-kill">Anti-kill</h3>
  1849. <p>It is notable that VenomRAT features an anti-kill protection mechanism, which can be enabled by the threat actor upon execution. Initially, the RAT calls a function named <code>EnableProtection</code>, which retrieves the security descriptor of the malicious process and modifies the Discretionary Access Control List (DACL) to remove any permissions that could hinder the RAT&#8217;s proper functioning or shorten its lifespan on the system.</p>
  1850. <p>The second component of this anti-kill measure involves a thread that runs a continuous loop, checking the list of running processes every 50 milliseconds. The loop specifically targets those processes commonly used by security analysts and system administrators to monitor host activity or analyze .NET binaries, among other tasks. If the RAT detects any of these processes, it will terminate them without prompting the user.</p>
  1851. <div id="attachment_117506" style="width: 2058px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11134004/latin-america4.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117506" class="size-full wp-image-117506" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11134004/latin-america4.png" alt="List of processes that the malware looks for to terminate" width="2048" height="357" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11134004/latin-america4.png 2048w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11134004/latin-america4-300x52.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11134004/latin-america4-1024x179.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11134004/latin-america4-768x134.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11134004/latin-america4-1536x268.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11134004/latin-america4-2008x350.png 2008w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11134004/latin-america4-740x129.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11134004/latin-america4-1600x280.png 1600w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/11134004/latin-america4-800x139.png 800w" sizes="auto, (max-width: 2048px) 100vw, 2048px" /></a><p id="caption-attachment-117506" class="wp-caption-text">List of processes that the malware looks for to terminate</p></div>
  1852. <p>The anti-kill measure also involves persistence, which is achieved through two mechanisms written into a VBS file generated and executed by VenomRAT. These mechanisms ensure the malware&#8217;s continued presence on the system:</p>
  1853. <ol>
  1854. <li>Windows Registry: The script creates a new key under HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce, pointing to the executable path. This allows the malware to persist across user sessions.</li>
  1855. <li>Process: The script runs a loop that checks for the presence of the malware process in the process list. If it is not found, the script executes the malware again.</li>
  1856. </ol>
  1857. <p>If the user who executed the malware has administrator privileges, the malware takes additional steps to ensure its persistence. It sets the <code>SeDebugPrivilege</code> token, enabling it to use the <code>RtlSetProcessIsCritical</code> function to mark itself as a critical system process. This makes the process &#8220;essential&#8221; to the system, allowing it to persist even when termination is attempted. However, when the administrator logs off or the computer is about to shut down, VenomRAT removes its critical mark to permit the system to proceed with these actions.</p>
  1858. <p>As a final measure to maintain persistence, the RAT calls the <code>SetThreadExecutionState</code> function with a set of flags that forces the display to remain on and the system to stay in a working state. This prevents the system from entering sleep mode.</p>
  1859. <p>Separately from the anti-kill methods, the malware also includes a protection mechanism against Windows Defender. In this case, the RAT actively searches for <code>MSASCui.exe</code> in the process list and terminates it. The malware then modifies the task scheduler and registry to disable Windows Defender globally, along with its various features.</p>
  1860. <h3 id="networking">Networking</h3>
  1861. <p>VenomRAT employs a custom packet building and serialization mechanism for its networking connection to the C2 server. Each packet is tailored to a specific action taken by the RAT, with a dedicated packet handler for each action. The packets transmitted to the C2 server undergo a multi-step process:</p>
  1862. <ol>
  1863. <li>The packet is first serialized to prepare it for transmission.</li>
  1864. <li>The serialized packet is then compressed using LZMA compression to reduce its size.</li>
  1865. <li>The compressed packet is encrypted using AES-128 encryption, utilizing the same key and authentication key mentioned earlier.</li>
  1866. </ol>
  1867. <p>Upon receiving packets from the C2 server, VenomRAT reverses this process to decrypt and extract the contents.</p>
  1868. <p>Additionally, VenomRAT implements tunneling by installing ngrok on the infected computer. The C2 server specifies the token, protocol, and port for the tunnel, which are sent in the serialized packet. This allows remote control services like RDP and VNC to operate through the tunnel and to be exposed to the internet.</p>
  1869. <h3 id="usb-spreading">USB spreading</h3>
  1870. <p>VenomRAT also possesses the capability to spread via USB drives. To achieve this, it scans drive letters from C to M and checks if each drive is removable. If a removable drive is detected, the RAT copies itself to all available drives under the name <code>My Pictures.exe</code>.</p>
  1871. <h3 id="extra-stealth-steps">Extra stealth steps</h3>
  1872. <p>In addition to copying itself to another directory and changing its executable name, VenomRAT employs several stealth techniques that distinguish it from QuasarRAT. Two notable examples include:</p>
  1873. <ul>
  1874. <li>Deletion of Zone.Identifier streams: VenomRAT deletes the Mark of the Web streams, which contain metadata about the URL from which the executable was downloaded. By removing this information, the RAT can evade detection by security tools like Windows Defender and avoid being quarantined, while also eliminating its digital footprint.</li>
  1875. <li>Clearing Windows event logs: The malware clears all Windows event logs on the compromised system, effectively creating a &#8220;clean slate&#8221; for its operations. This action ensures that any events generated during the RAT&#8217;s execution are erased, making it more challenging for security analysts to detect and track its activities.</li>
  1876. </ul>
  1877. <h2 id="victimology">Victimology</h2>
  1878. <p>The primary targets of RevengeHotels attacks continue to be hotels and front desks, with a focus on establishments located in Brazil. However, the threat actors have been adapting their tactics, and phishing emails are now being sent in languages other than Portuguese. Specifically, we&#8217;ve observed that emails in Spanish are being used to target hotels and tourism companies in Spanish-speaking countries, indicating a potential expansion of the threat actor&#8217;s scope. Note that among earlier victims of this threat are such Spanish-speaking countries as Argentina, Bolivia, Chile, Costa Rica, Mexico, and Spain.</p>
  1879. <p>It is important to point out that previously reported campaigns have mentioned the threat actor targeting hotel front desks globally, particularly in Russia, Belarus, and Turkey, although no such activity has yet been detected during the latest RevengeHotels campaign.</p>
  1880. <h2 id="conclusions">Conclusions</h2>
  1881. <p>RevengeHotels has significantly enhanced its capabilities, developing new tactics to target the hospitality and tourism sectors. With the assistance of LLM agents, the group has been able to generate and modify their phishing lures, expanding their attacks to new regions. The websites used for these attacks are constantly rotating, and the initial payloads are continually changing, but the ultimate objective remains the same: to deploy a remote access Trojan (RAT). In this case, the RAT in question is VenomRAT, a privately developed variant of the open-source QuasarRAT.</p>
  1882. <p>Kaspersky products detect these threats as <code>HEUR:Trojan-Downloader.Script.Agent.gen</code>, <code>HEUR:Trojan.Win32.Generic</code>, <code>HEUR:Trojan.MSIL.Agent.gen</code>, <code>Trojan-Downloader.PowerShell.Agent.ady</code>, <code>Trojan.PowerShell.Agent.aqx</code>.</p>
  1883. <h2 id="indicators-of-compromise">Indicators of compromise</h2>
  1884. <p><a href="https://opentip.kaspersky.com/fbadfff7b61d820e3632a2f464079e8c/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______11c095495d35df74&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL">fbadfff7b61d820e3632a2f464079e8c</a> Fat146571.js<br />
  1885. <a href="https://opentip.kaspersky.com/d5f241dee73cffe51897c15f36b713cc/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______7883728a48b0302a&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL">d5f241dee73cffe51897c15f36b713cc</a> SGDoHBZQWpLKXCAoTHXdBGlnQJLZCGBOVGLH_{TIMESTAMP}.ps1<br />
  1886. <a href="https://opentip.kaspersky.com/1077ea936033ee9e9bf444dafb55867c/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______1b73659670788504&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL">1077ea936033ee9e9bf444dafb55867c</a> cargajecerrr.txt<br />
  1887. <a href="https://opentip.kaspersky.com/b1a5dc66f40a38d807ec8350ae89d1e4/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______85ec13e958c9c6cc&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL">b1a5dc66f40a38d807ec8350ae89d1e4</a> cargajecerrr.txt<br />
  1888. <a href="https://opentip.kaspersky.com/dbf5afa377e3e761622e5f21af1f09e6/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______014e160c9c26a66d&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL">dbf5afa377e3e761622e5f21af1f09e6</a> runpe.txt<br />
  1889. <a href="https://opentip.kaspersky.com/607f64b56bb3b94ee0009471f1fe9a3c/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______4e53765727c6307c&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL">607f64b56bb3b94ee0009471f1fe9a3c</a> venumentrada.txt<br />
  1890. <a href="https://opentip.kaspersky.com/3ac65326f598ee9930031c17ce158d3d/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______e25f34a7be680b5d&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL">3ac65326f598ee9930031c17ce158d3d</a> deobfuscated runpe.txt<br />
  1891. <a href="https://opentip.kaspersky.com/91454a68ca3a6ce7cb30c9264a88c0dc/results?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team_______f0db71705db2b119&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL">91454a68ca3a6ce7cb30c9264a88c0dc</a> deobfuscated venumentrada.txt</p>
  1892. ]]></content:encoded>
  1893. <wfw:commentRss>https://securelist.com/revengehotels-attacks-with-ai-and-venomrat-across-latin-america/117493/feed/</wfw:commentRss>
  1894. <slash:comments>0</slash:comments>
  1895. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/15114425/revengehotels-featured-image.jpg" width="2000" height="1000"><media:keywords>full</media:keywords></media:content>
  1896. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/15114425/revengehotels-featured-image-1024x512.jpg" width="1024" height="512"><media:keywords>large</media:keywords></media:content>
  1897. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/15114425/revengehotels-featured-image-300x150.jpg" width="300" height="150"><media:keywords>medium</media:keywords></media:content>
  1898. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/09/15114425/revengehotels-featured-image-150x150.jpg" width="150" height="150"><media:keywords>thumbnail</media:keywords></media:content>
  1899. </item>
  1900. </channel>
  1901. </rss>
  1902.  

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid RSS" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

http://www.feedvalidator.org/check.cgi?url=http%3A//securelist.com/feed/

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda