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: https://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>Tue, 21 Oct 2025 13:20:13 +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>The evolving landscape of email phishing attacks: how threat actors are reusing and refining established techniques</title>
  32. <link>https://securelist.com/email-phishing-techniques-2025/117801/</link>
  33. <comments>https://securelist.com/email-phishing-techniques-2025/117801/#respond</comments>
  34. <dc:creator><![CDATA[Roman Dedenok]]></dc:creator>
  35. <pubDate>Tue, 21 Oct 2025 10:00:06 +0000</pubDate>
  36. <category><![CDATA[Spam and phishing]]></category>
  37. <category><![CDATA[Spammer techniques]]></category>
  38. <category><![CDATA[Spam Letters]]></category>
  39. <category><![CDATA[Phishing]]></category>
  40. <category><![CDATA[CAPTCHA]]></category>
  41. <category><![CDATA[Phishing websites]]></category>
  42. <category><![CDATA[QR-codes]]></category>
  43. <category><![CDATA[2FA]]></category>
  44. <category><![CDATA[Spam and Phishing]]></category>
  45. <guid isPermaLink="false">https://kasperskycontenthub.com/securelist/?p=117801</guid>
  46.  
  47. <description><![CDATA[Common email phishing tactics in 2025 include PDF attachments with QR codes, password-protected PDF documents, calendar phishing, and advanced websites that validate email addresses.]]></description>
  48. <content:encoded><![CDATA[<p><img width="990" height="400" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/20200617/SL-email-phishing-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>
  49. <p>Cyberthreats are constantly evolving, and email phishing is no exception. Threat actors keep coming up with new methods to bypass security filters and circumvent user vigilance. At the same time, established – and even long-forgotten – tactics have not gone anywhere; in fact, some are getting a second life. This post details some of the unusual techniques malicious actors are employing in 2025.</p>
  50. <h2 id="using-pdf-files-from-qr-codes-to-passwords">Using PDF files: from QR codes to passwords</h2>
  51. <p>Emails with PDF attachments are becoming increasingly common in both mass and targeted phishing campaigns. Whereas in the past, most PDF files contained phishing links, the main trend in these attacks today is the use of QR codes.</p>
  52. <div id="attachment_117802" style="width: 1441px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142213/email-phishing1.png" class="magnificImage"><img fetchpriority="high" decoding="async" aria-describedby="caption-attachment-117802" class="size-full wp-image-117802" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142213/email-phishing1.png" alt="Email with a PDF attachment that contains a phishing QR code" width="1431" height="2040" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142213/email-phishing1.png 1431w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142213/email-phishing1-210x300.png 210w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142213/email-phishing1-718x1024.png 718w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142213/email-phishing1-768x1095.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142213/email-phishing1-1077x1536.png 1077w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142213/email-phishing1-246x350.png 246w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142213/email-phishing1-701x1000.png 701w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142213/email-phishing1-196x280.png 196w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142213/email-phishing1-631x900.png 631w" sizes="(max-width: 1431px) 100vw, 1431px" /></a><p id="caption-attachment-117802" class="wp-caption-text">Email with a PDF attachment that contains a phishing QR code</p></div>
  53. <p>This represents a logical progression from the trend of <a href="https://securelist.com/qr-codes-in-phishing/110676/" target="_blank" rel="noopener">using QR codes directly in the email body</a>. This approach simplifies the process of disguising the phishing link while motivating users to open the link on their mobile phone, which may lack the security safeguards of a work computer.</p>
  54. <p>Email campaigns that include phishing links embedded in PDF attachments continue to pose a significant threat, but attackers are increasingly employing additional techniques to evade detection. For example, some PDF files are encrypted and protected with a password.</p>
  55. <div id="attachment_117803" style="width: 1242px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142353/email-phishing2.png" class="magnificImage"><img decoding="async" aria-describedby="caption-attachment-117803" class="size-full wp-image-117803" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142353/email-phishing2.png" alt="Phishing email with a password-protected PDF attachment" width="1232" height="1016" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142353/email-phishing2.png 1232w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142353/email-phishing2-300x247.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142353/email-phishing2-1024x844.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142353/email-phishing2-768x633.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142353/email-phishing2-424x350.png 424w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142353/email-phishing2-740x610.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142353/email-phishing2-340x280.png 340w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142353/email-phishing2-800x660.png 800w" sizes="(max-width: 1232px) 100vw, 1232px" /></a><p id="caption-attachment-117803" class="wp-caption-text">Phishing email with a password-protected PDF attachment</p></div>
  56. <p>The password may be included in the email that contains the PDF, or it may be sent in a separate message. From the cybersecurity standpoint, this approach complicates quick file scanning, while for the recipients it lends an air of legitimacy to attackers&#8217; efforts and can be perceived as adherence to high security standards. Consequently, these emails tend to inspire more user trust.</p>
  57. <div id="attachment_117804" style="width: 1372px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142428/email-phishing3.jpeg" class="magnificImage"><img decoding="async" aria-describedby="caption-attachment-117804" class="size-full wp-image-117804" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142428/email-phishing3.jpeg" alt="PDF file after the user enters the password" width="1362" height="841" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142428/email-phishing3.jpeg 1362w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142428/email-phishing3-300x185.jpeg 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142428/email-phishing3-1024x632.jpeg 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142428/email-phishing3-768x474.jpeg 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142428/email-phishing3-567x350.jpeg 567w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142428/email-phishing3-740x457.jpeg 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142428/email-phishing3-453x280.jpeg 453w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142428/email-phishing3-800x494.jpeg 800w" sizes="(max-width: 1362px) 100vw, 1362px" /></a><p id="caption-attachment-117804" class="wp-caption-text">PDF file after the user enters the password</p></div>
  58. <h2 id="phishing-and-calendar-alerts">Phishing and calendar alerts</h2>
  59. <p>The use of calendar events as a spam technique, which was popular in the late 2010s but gradually faded away after 2019, is a relatively old tactic. The concept is straightforward: attackers send an email that contains a calendar appointment. The body of the email may be empty, but a phishing link is concealed in the event description.</p>
  60. <div id="attachment_117805" style="width: 846px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142516/email-phishing4.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117805" class="size-full wp-image-117805" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142516/email-phishing4.png" alt="Blank email with a phishing link in the calendar appointment " width="836" height="386" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142516/email-phishing4.png 836w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142516/email-phishing4-300x139.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142516/email-phishing4-768x355.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142516/email-phishing4-758x350.png 758w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142516/email-phishing4-740x342.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142516/email-phishing4-606x280.png 606w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142516/email-phishing4-800x369.png 800w" sizes="auto, (max-width: 836px) 100vw, 836px" /></a><p id="caption-attachment-117805" class="wp-caption-text">Blank email with a phishing link in the calendar appointment</p></div>
  61. <p>When the recipient opens the email, the event is added to their calendar – along with the link. If the user accepts the meeting without thoroughly reviewing it, they will later receive a reminder about it from the calendar application. As a result, they risk landing on the phishing website, even if they chose not to open the link directly in the original message.</p>
  62. <p>In 2025, phishers revived this old tactic. However, unlike the late 2010s, when these campaigns were primarily mass mailshots designed with Google Calendar in mind, they are now being used in B2B phishing and specifically target office workers.</p>
  63. <div id="attachment_117806" style="width: 593px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142602/email-phishing5.jpeg" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117806" class="size-full wp-image-117806" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142602/email-phishing5.jpeg" alt="Phishing sign-in form for a Microsoft account from a calendar phishing attack" width="583" height="1080" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142602/email-phishing5.jpeg 583w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142602/email-phishing5-162x300.jpeg 162w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142602/email-phishing5-553x1024.jpeg 553w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142602/email-phishing5-189x350.jpeg 189w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142602/email-phishing5-540x1000.jpeg 540w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142602/email-phishing5-151x280.jpeg 151w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142602/email-phishing5-486x900.jpeg 486w" sizes="auto, (max-width: 583px) 100vw, 583px" /></a><p id="caption-attachment-117806" class="wp-caption-text">Phishing sign-in form for a Microsoft account from a calendar phishing attack</p></div>
  64. <h2 id="verifying-existing-accounts">Verifying existing accounts</h2>
  65. <p>Attackers are not just updating the methods they use to deliver phishing content, but also the phishing websites. Often, even the most primitive-looking email campaigns distribute links to pages that utilize new techniques.</p>
  66. <div id="attachment_117807" style="width: 770px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142722/email-phishing6.jpeg" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117807" class="size-full wp-image-117807" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142722/email-phishing6.jpeg" alt="Voice message phishing" width="760" height="287" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142722/email-phishing6.jpeg 760w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142722/email-phishing6-300x113.jpeg 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142722/email-phishing6-740x279.jpeg 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142722/email-phishing6-741x280.jpeg 741w" sizes="auto, (max-width: 760px) 100vw, 760px" /></a><p id="caption-attachment-117807" class="wp-caption-text">Voice message phishing</p></div>
  67. <p>For example, we observed a minimalistic email campaign crafted to look like an alert about a voice message left for the user. The body of the email contained only a couple of sentences, often with a space in the word &#8220;voice&#8221;, and a link. The link led to a simple landing page that invited the recipient to listen to the message.</p>
  68. <div id="attachment_117808" style="width: 589px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142808/email-phishing7.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117808" class="size-full wp-image-117808" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142808/email-phishing7.png" alt="Landing page that opens when clicking the link in the phishing email" width="579" height="408" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142808/email-phishing7.png 579w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142808/email-phishing7-300x211.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142808/email-phishing7-497x350.png 497w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142808/email-phishing7-397x280.png 397w" sizes="auto, (max-width: 579px) 100vw, 579px" /></a><p id="caption-attachment-117808" class="wp-caption-text">Landing page that opens when clicking the link in the phishing email</p></div>
  69. <p>However, if the user clicks the button, the path does not lead to a single page but rather a chain of verification pages that employ CAPTCHA. The purpose is likely to evade detection by security bots.</p>
  70. <div id="attachment_117809" style="width: 1234px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142905/email-phishing8.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117809" class="size-full wp-image-117809" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142905/email-phishing8.png" alt="The CAPTCHA verification chain" width="1224" height="447" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142905/email-phishing8.png 1224w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142905/email-phishing8-300x110.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142905/email-phishing8-1024x374.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142905/email-phishing8-768x280.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142905/email-phishing8-958x350.png 958w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142905/email-phishing8-740x270.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142905/email-phishing8-767x280.png 767w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17142905/email-phishing8-800x292.png 800w" sizes="auto, (max-width: 1224px) 100vw, 1224px" /></a><p id="caption-attachment-117809" class="wp-caption-text">The CAPTCHA verification chain</p></div>
  71. <p>After repeatedly proving they are not a bot, the user finally lands on a website designed to mimic a Google sign-in form.</p>
  72. <div id="attachment_117810" style="width: 787px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143024/email-phishing9.jpeg" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117810" class="size-full wp-image-117810" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143024/email-phishing9.jpeg" alt="The phishing sign-in form" width="777" height="583" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143024/email-phishing9.jpeg 777w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143024/email-phishing9-300x225.jpeg 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143024/email-phishing9-768x576.jpeg 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143024/email-phishing9-200x150.jpeg 200w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143024/email-phishing9-466x350.jpeg 466w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143024/email-phishing9-740x555.jpeg 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143024/email-phishing9-373x280.jpeg 373w" sizes="auto, (max-width: 777px) 100vw, 777px" /></a><p id="caption-attachment-117810" class="wp-caption-text">The phishing sign-in form</p></div>
  73. <p>This page is notable for validating the Gmail address the user enters and displaying an error if it is not a registered email.</p>
  74. <div id="attachment_117811" style="width: 788px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143113/email-phishing10.jpeg" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117811" class="size-full wp-image-117811" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143113/email-phishing10.jpeg" alt="Error message" width="778" height="584" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143113/email-phishing10.jpeg 778w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143113/email-phishing10-300x225.jpeg 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143113/email-phishing10-768x576.jpeg 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143113/email-phishing10-200x150.jpeg 200w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143113/email-phishing10-466x350.jpeg 466w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143113/email-phishing10-740x555.jpeg 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143113/email-phishing10-373x280.jpeg 373w" sizes="auto, (max-width: 778px) 100vw, 778px" /></a><p id="caption-attachment-117811" class="wp-caption-text">Error message</p></div>
  75. <p>If the victim enters a valid address, then, regardless whether the password is correct or not, the phishing site will display another similar page, with a message indicating that the password is invalid. In both scenarios, clicking &#8220;Reset Session&#8221; opens the email input form again. If a distracted user attempts to log in by trying different accounts and passwords, all of these end up in the hands of the attackers.</p>
  76. <h2 id="mfa-evasion">MFA evasion</h2>
  77. <p>Because many users protect their accounts with multi-factor authentication, scammers try to come up with ways to steal not just passwords but also <a href="https://securelist.com/2fa-phishing/112805/" target="_blank" rel="noopener">one-time codes</a> and <a href="https://securelist.com/new-phishing-and-scam-trends-in-2025/117217/#hunting-for-new-data" target="_blank" rel="noopener">other verification data</a>. Email phishing campaigns that redirect users to sites designed to bypass MFA can vary significantly in sophistication. Some campaigns employ primitive tactics, while others use well-crafted messages that are initially difficult to distinguish from legitimate ones. Let&#8217;s look at an email that falls in the latter category.</p>
  78. <div id="attachment_117812" style="width: 1403px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143237/email-phishing11.jpeg" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117812" class="size-full wp-image-117812" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143237/email-phishing11.jpeg" alt="Phishing email that mimics a pCloud notification" width="1393" height="801" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143237/email-phishing11.jpeg 1393w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143237/email-phishing11-300x173.jpeg 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143237/email-phishing11-1024x589.jpeg 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143237/email-phishing11-768x442.jpeg 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143237/email-phishing11-609x350.jpeg 609w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143237/email-phishing11-740x426.jpeg 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143237/email-phishing11-487x280.jpeg 487w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143237/email-phishing11-800x460.jpeg 800w" sizes="auto, (max-width: 1393px) 100vw, 1393px" /></a><p id="caption-attachment-117812" class="wp-caption-text">Phishing email that mimics a pCloud notification</p></div>
  79. <p>Unlike most phishing emails that try to immediately scare the user or otherwise grab their attention, the subject here is quite neutral: a support ticket update from the secure cloud storage provider pCloud that asks the user to evaluate the quality of the service. No threats or urgent calls to action. If the user attempts to follow the link, they are taken to a phishing sign-in form visually identical to the original, but with one key difference: instead of pcloud.com, the attackers use a different top-level domain, p-cloud.online.</p>
  80. <div id="attachment_117813" style="width: 1164px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143327/email-phishing12.jpeg" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117813" class="size-full wp-image-117813" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143327/email-phishing12.jpeg" alt="The phishing sign-in form" width="1154" height="666" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143327/email-phishing12.jpeg 1154w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143327/email-phishing12-300x173.jpeg 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143327/email-phishing12-1024x591.jpeg 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143327/email-phishing12-768x443.jpeg 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143327/email-phishing12-606x350.jpeg 606w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143327/email-phishing12-740x427.jpeg 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143327/email-phishing12-485x280.jpeg 485w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143327/email-phishing12-800x462.jpeg 800w" sizes="auto, (max-width: 1154px) 100vw, 1154px" /></a><p id="caption-attachment-117813" class="wp-caption-text">The phishing sign-in form</p></div>
  81. <p>At every step of the user&#8217;s interaction with the form on the malicious site, the site communicates with the real pCloud service via an API. Therefore, if a user enters an address that is not registered with the service, they will see an error, as if they were signing in to pcloud.com. If a real address is entered, a one-time password (OTP) input form opens, which pCloud also requests when a user tries to sign in.</p>
  82. <div id="attachment_117814" style="width: 1160px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143415/email-phishing13.jpeg" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117814" class="size-full wp-image-117814" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143415/email-phishing13.jpeg" alt="OTP input form" width="1150" height="683" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143415/email-phishing13.jpeg 1150w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143415/email-phishing13-300x178.jpeg 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143415/email-phishing13-1024x608.jpeg 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143415/email-phishing13-768x456.jpeg 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143415/email-phishing13-589x350.jpeg 589w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143415/email-phishing13-740x439.jpeg 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143415/email-phishing13-471x280.jpeg 471w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143415/email-phishing13-800x475.jpeg 800w" sizes="auto, (max-width: 1150px) 100vw, 1150px" /></a><p id="caption-attachment-117814" class="wp-caption-text">OTP input form</p></div>
  83. <p>Since the phishing site relays all entered data to the real service, an attempt to trick the verification process will fail: if a random combination is entered, the site will respond with an error.</p>
  84. <div id="attachment_117815" style="width: 478px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143457/email-phishing14.jpeg" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117815" class="size-full wp-image-117815" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143457/email-phishing14.jpeg" alt="Attempting to bypass verification" width="468" height="403" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143457/email-phishing14.jpeg 468w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143457/email-phishing14-300x258.jpeg 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143457/email-phishing14-406x350.jpeg 406w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143457/email-phishing14-325x280.jpeg 325w" sizes="auto, (max-width: 468px) 100vw, 468px" /></a><p id="caption-attachment-117815" class="wp-caption-text">Attempting to bypass verification</p></div>
  85. <p>The real OTP is sent by the pCloud service to the email address the user provided on the phishing site.</p>
  86. <div id="attachment_117816" style="width: 500px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143533/email-phishing15.jpeg" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117816" class="size-full wp-image-117816" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143533/email-phishing15.jpeg" alt="OTP email" width="490" height="347" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143533/email-phishing15.jpeg 490w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143533/email-phishing15-300x212.jpeg 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143533/email-phishing15-395x280.jpeg 395w" sizes="auto, (max-width: 490px) 100vw, 490px" /></a><p id="caption-attachment-117816" class="wp-caption-text">OTP email</p></div>
  87. <p>Once the user has &#8220;verified&#8221; the account, they land on the password input form; this is also requested by the real service. After this step, the phishing page opens a copy of the pCloud website, and the attacker gains access to the victim&#8217;s account. We have to give credit to the scammers: this is a high-quality copy. It even includes a default folder with a default image identical to the original, which may delay the user&#8217;s realization that they have been tricked.</p>
  88. <div id="attachment_117817" style="width: 555px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143611/email-phishing16.jpeg" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117817" class="size-full wp-image-117817" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143611/email-phishing16.jpeg" alt="Password input form" width="545" height="398" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143611/email-phishing16.jpeg 545w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143611/email-phishing16-300x219.jpeg 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143611/email-phishing16-479x350.jpeg 479w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17143611/email-phishing16-383x280.jpeg 383w" sizes="auto, (max-width: 545px) 100vw, 545px" /></a><p id="caption-attachment-117817" class="wp-caption-text">Password input form</p></div>
  89. <h2 id="conclusion">Conclusion</h2>
  90. <p>Threat actors are increasingly employing diverse evasion techniques in their phishing campaigns and websites. In email, these techniques include PDF documents containing QR codes, which are not as easily detected as standard hyperlinks. Another measure is password protection of attachments. In some instances, the password arrives in a separate email, adding another layer of difficulty to automated analysis. Attackers are protecting their web pages with CAPTCHAs, and they may even use more than one verification page. Concurrently, the credential-harvesting schemes themselves are becoming more sophisticated and convincing.</p>
  91. <p>To avoid falling victim to phishers, users must stay sharp:</p>
  92. <ul>
  93. <li>Treat unusual attachments, such as password-protected PDFs or documents using a QR code instead of a link to a corporate website, with suspicion.</li>
  94. <li>Before entering credentials on any web page, verify that the URL matches the address of the legitimate online service.</li>
  95. </ul>
  96. <p>Organizations are advised to conduct regular <a href="https://www.kaspersky.com/enterprise-security/security-awareness?icid=gl_sl_lnk-security-awareness_sm-team_df95e80a3921c34d" target="_blank" rel="noopener">security training</a> for employees to keep them up-to-date on the latest techniques being used by threat actors. We also recommend implementing a reliable solution for email server security. For example, <a href="https://www.kaspersky.com/enterprise-security/mail-server-security?icid=gl_sl_lnk-mail-server-security_sm-team_07351ed8c5ab12ce" target="_blank" rel="noopener">Kaspersky Security for Mail Server</a> detects and blocks all the attack methods described in this article.</p>
  97. ]]></content:encoded>
  98. <wfw:commentRss>https://securelist.com/email-phishing-techniques-2025/117801/feed/</wfw:commentRss>
  99. <slash:comments>0</slash:comments>
  100. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/20200617/SL-email-phishing-featured.jpg" width="2000" height="1000"><media:keywords>full</media:keywords></media:content>
  101. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/20200617/SL-email-phishing-featured-1024x512.jpg" width="1024" height="512"><media:keywords>large</media:keywords></media:content>
  102. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/20200617/SL-email-phishing-featured-300x150.jpg" width="300" height="150"><media:keywords>medium</media:keywords></media:content>
  103. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/20200617/SL-email-phishing-featured-150x150.jpg" width="150" height="150"><media:keywords>thumbnail</media:keywords></media:content>
  104. </item>
  105. <item>
  106. <title>PassiveNeuron: a sophisticated campaign targeting servers of high-profile organizations</title>
  107. <link>https://securelist.com/passiveneuron-campaign-with-apt-implants-and-cobalt-strike/117745/</link>
  108. <comments>https://securelist.com/passiveneuron-campaign-with-apt-implants-and-cobalt-strike/117745/#respond</comments>
  109. <dc:creator><![CDATA[Georgy Kucherin, Saurabh Sharma]]></dc:creator>
  110. <pubDate>Tue, 21 Oct 2025 08:00:52 +0000</pubDate>
  111. <category><![CDATA[Malware descriptions]]></category>
  112. <category><![CDATA[GReAT research]]></category>
  113. <category><![CDATA[Malware Technologies]]></category>
  114. <category><![CDATA[Malware Descriptions]]></category>
  115. <category><![CDATA[Malware]]></category>
  116. <category><![CDATA[Backdoor]]></category>
  117. <category><![CDATA[Encryption]]></category>
  118. <category><![CDATA[.NET]]></category>
  119. <category><![CDATA[PowerShell]]></category>
  120. <category><![CDATA[DLL hijacking]]></category>
  121. <category><![CDATA[Microsoft SQL]]></category>
  122. <category><![CDATA[CobaltStrike]]></category>
  123. <category><![CDATA[DLL]]></category>
  124. <category><![CDATA[web shell]]></category>
  125. <category><![CDATA[VBS]]></category>
  126. <category><![CDATA[GitHub]]></category>
  127. <category><![CDATA[Windows Server]]></category>
  128. <category><![CDATA[Windows malware]]></category>
  129. <guid isPermaLink="false">https://kasperskycontenthub.com/securelist/?p=117745</guid>
  130.  
  131. <description><![CDATA[Kaspersky GReAT experts break down a recent PassiveNeuron campaign that targets servers worldwide with custom Neursite and NeuralExecutor APT implants and Cobalt Strike.]]></description>
  132. <content:encoded><![CDATA[<p><img width="990" height="400" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/20163102/passiveneuron-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>
  133. <p>Back in 2024, we <a href="https://securelist.com/apt-report-q3-2024/114623/#passiveneuron" target="_blank" rel="noopener">gave a brief description</a> of a complex cyberespionage campaign that we dubbed &#8220;PassiveNeuron&#8221;. This campaign involved compromising the servers of government organizations with previously unknown APT implants, named &#8220;Neursite&#8221; and &#8220;NeuralExecutor&#8221;. However, since its discovery, the PassiveNeuron campaign has been shrouded in mystery. For instance, it remained unclear how the implants in question were deployed or what actor was behind them.</p>
  134. <p>After we detected this campaign and prevented its spreading back in June 2024, we did not see any further malware deployments linked to PassiveNeuron for quite a long time, about six months. However, since December 2024, we have observed a new wave of infections related to PassiveNeuron, with the latest ones dating back to August 2025. These infections targeted government, financial and industrial organizations located in Asia, Africa, and Latin America. Since identifying these infections, we have been able to shed light on many previously unknown aspects of this campaign. Thus, we managed to discover details about the initial infection and gather clues on attribution.</p>
  135. <h2 id="sql-servers-under-attack">SQL servers under attack</h2>
  136. <p>While investigating PassiveNeuron infections both in 2024 and 2025, we found that a vast majority of targeted machines were running Windows Server. Specifically, in one particular infection case, we observed attackers gain initial remote command execution capabilities on the compromised server through the Microsoft SQL software. While we do not have clear visibility into how attackers were able to abuse the SQL software, it is worth noting that SQL servers typically get compromised through:</p>
  137. <ul>
  138. <li>Exploitation of vulnerabilities in the server software itself</li>
  139. <li>Exploitation of SQL injection vulnerabilities present in the applications running on the server</li>
  140. <li>Getting access to the database administration account (e.g. by brute-forcing the password) and using it to <a href="https://securelist.com/malicious-tasks-in-ms-sql-server/92167/" target="_blank" rel="noopener">execute malicious SQL queries</a></li>
  141. </ul>
  142. <p>After obtaining the code execution capabilities with the help of the SQL software, attackers deployed an ASPX web shell for basic malicious command execution on the compromised machine. However, at this stage, things did not go as planned for the adversary. The Kaspersky solution installed on the machine was preventing the web shell deployment efforts, and the process of installing the web shell ended up being quite noisy.</p>
  143. <p>In attempts to evade detection of the web shell, attackers performed its installation in the following manner:</p>
  144. <ol>
  145. <li>They dropped a file containing the Base64-encoded web shell on the system.</li>
  146. <li>They dropped a PowerShell script responsible for Base64-decoding the web shell file.</li>
  147. <li>They launched the PowerShell script in an attempt to write the decoded web shell payload to the filesystem.</li>
  148. </ol>
  149. <p>As Kaspersky solutions were preventing the web shell installation, we observed attackers to repeat the steps above several times with minor adjustments, such as:</p>
  150. <ul>
  151. <li>Using hexadecimal encoding of the web shell instead of Base64</li>
  152. <li>Using a VBS script instead of a PowerShell script to perform decoding</li>
  153. <li>Writing the script contents in a line-by-line manner</li>
  154. </ul>
  155. <p>Having failed to deploy the web shell, attackers decided to use more advanced malicious implants to continue the compromise process.</p>
  156. <h2 id="malicious-implants">Malicious implants</h2>
  157. <p>Over the last two years, we have observed three implants used over the course of PassiveNeuron infections, which are:</p>
  158. <ul>
  159. <li>Neursite, a custom C++ modular backdoor used for cyberespionage activities</li>
  160. <li>NeuralExecutor, a custom .NET implant used for running additional .NET payloads</li>
  161. <li>the Cobalt Strike framework, a commercial tool for red teaming</li>
  162. </ul>
  163. <p>While we saw different combinations of these implants deployed on targeted machines, we observed that in the vast majority of cases, they were loaded through a chain of DLL loaders. The first-stage loader in the chain is a DLL file placed in the system directory. Some of these DLL file paths are:</p>
  164. <ul>
  165. <li>C:\Windows\System32\wlbsctrl.dll</li>
  166. <li>C:\Windows\System32\TSMSISrv.dll</li>
  167. <li>C:\Windows\System32\oci.dll</li>
  168. </ul>
  169. <p>Storing DLLs under these paths has been beneficial to attackers, as placing libraries with these names inside the System32 folder makes it possible to automatically ensure persistence. If present on the file system, these DLLs get automatically loaded on startup (the first two DLLs are loaded into the <code>svchost.exe</code> process, while the latter is loaded into <code>msdtc.exe</code>) due to the employed <a href="https://attack.mitre.org/techniques/T1574/001/" target="_blank" rel="noopener">Phantom DLL Hijacking technique</a>.</p>
  170. <p>It also should be noted that these DLLs are more than 100 MB in size — their size is artificially inflated by attackers by adding junk overlay bytes. Usually, this is done to make malicious implants more difficult to detect by security solutions.</p>
  171. <p>On startup, the first-stage DLLs iterate through a list of installed network adapters, calculating a 32-bit hash of each adapter&#8217;s MAC address. If neither of the MAC addresses is equal to the value specified in the loader configuration, the loader exits. This MAC address check is designed to ensure that the DLLs get solely launched on the intended victim machine, in order to hinder execution in a sandbox environment. Such detailed narrowing down of victims implies the adversary&#8217;s interest towards specific organizations and once again underscores the targeted nature of this threat.</p>
  172. <p>Having checked that it is operating on a target machine, the loader continues execution by loading a second-stage loader DLL that is stored on disk. The paths where the second-stage DLLs were stored as well as their names (examples include <code>elscorewmyc.dll</code> and <code>wellgwlserejzuai.dll</code>) differed between machines. We observed the second-stage DLLs to also have an artificially inflated file size (in excess of 60 MB), and the malicious goal was to open a text file containing a Base64-encoded and AES-encrypted third-stage loader, and subsequently launch it.</p>
  173. <div id="attachment_117746" style="width: 1310px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131035/passiveneuron-campaign-with-apt1.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117746" class="size-full wp-image-117746" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131035/passiveneuron-campaign-with-apt1.png" alt="Snippet of the payload file contents" width="1300" height="82" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131035/passiveneuron-campaign-with-apt1.png 1300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131035/passiveneuron-campaign-with-apt1-300x19.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131035/passiveneuron-campaign-with-apt1-1024x65.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131035/passiveneuron-campaign-with-apt1-768x48.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131035/passiveneuron-campaign-with-apt1-740x47.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131035/passiveneuron-campaign-with-apt1-800x50.png 800w" sizes="auto, (max-width: 1300px) 100vw, 1300px" /></a><p id="caption-attachment-117746" class="wp-caption-text">Snippet of the payload file contents</p></div>
  174. <p>This payload is a DLL as well, responsible for launching a fourth-stage shellcode loader inside another process (e.g. <code>WmiPrvSE.exe</code> or <code>msiexec.exe</code>) which is created in suspended mode. In turn, this shellcode loads the final payload: a PE file converted to a custom executable format.</p>
  175. <p>In summary, the process of loading the final payload can be represented with the following graph:</p>
  176. <div id="attachment_117747" style="width: 1912px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131116/passiveneuron-campaign-with-apt2.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117747" class="size-full wp-image-117747" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131116/passiveneuron-campaign-with-apt2.png" alt="Final payload loading" width="1902" height="482" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131116/passiveneuron-campaign-with-apt2.png 1902w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131116/passiveneuron-campaign-with-apt2-300x76.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131116/passiveneuron-campaign-with-apt2-1024x259.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131116/passiveneuron-campaign-with-apt2-768x195.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131116/passiveneuron-campaign-with-apt2-1536x389.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131116/passiveneuron-campaign-with-apt2-1381x350.png 1381w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131116/passiveneuron-campaign-with-apt2-740x188.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131116/passiveneuron-campaign-with-apt2-1105x280.png 1105w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131116/passiveneuron-campaign-with-apt2-800x203.png 800w" sizes="auto, (max-width: 1902px) 100vw, 1902px" /></a><p id="caption-attachment-117747" class="wp-caption-text">Final payload loading</p></div>
  177. <p>It is also notable that attackers attempted to use slightly different variants of the loading scheme for some of the target organizations. For example, we have seen cases without payload injection into another process, or with DLL obfuscation on disk with VMProtect.</p>
  178. <h3 id="the-neursite-backdoor">The Neursite backdoor</h3>
  179. <p>Among the three final payload implants that we mentioned above, the Neursite backdoor is the most potent one. We dubbed it so because we observed the following source code path inside the discovered samples: E:\pro\code\Neursite\client_server\nonspec\mbedtls\library\ssl_srv.c. The configuration of this implant contains the following parameters:</p>
  180. <ul>
  181. <li>List of C2 servers and their ports</li>
  182. <li>List of HTTP proxies that can be used to connect to C2 servers</li>
  183. <li>List of HTTP headers used while connecting to HTTP-based C2 servers</li>
  184. <li>A relative URL used while communicating with HTTP-based C2 servers</li>
  185. <li>A range of wait time between two consecutive C2 server connections</li>
  186. <li>A byte array of hours and days of the week when the backdoor is operable</li>
  187. <li>An optional port that should be opened for listening to incoming connections</li>
  188. </ul>
  189. <p>The Neursite implant can use the TCP, SSL, HTTP and HTTPS protocols for C2 communications. As follows from the configuration, Neursite can connect to the C2 server directly or wait for another machine to start communicating through a specified port. In cases we observed, Neursite samples were configured to use either external servers or compromised internal infrastructure for C2 communications.</p>
  190. <p>The default range of commands implemented inside this backdoor allows attackers to:</p>
  191. <ul>
  192. <li>Retrieve system information.</li>
  193. <li>Manage running processes.</li>
  194. <li>Proxy traffic through other machines infected with the Neursite implant, in order to facilitate lateral movement.</li>
  195. </ul>
  196. <p>Additionally, this implant is equipped with a component that allows loading supplementary plugins. We observed attackers deploy plugins with the following capabilities:</p>
  197. <ul>
  198. <li>Shell command execution</li>
  199. <li>File system management</li>
  200. <li>TCP socket operations</li>
  201. </ul>
  202. <h3 id="the-neuralexecutor-loader">The NeuralExecutor loader</h3>
  203. <p>NeuralExecutor is another custom implant deployed over the course of the PassiveNeuron campaign. This implant is .NET based, and we found that it employed the open-source ConfuserEx obfuscator for protection against analysis. It implements multiple methods of network communication, namely TCP, HTTP/HTTPS, named pipes, and WebSockets. Upon establishing a communication channel with the C2 server, the backdoor can receive commands allowing it to load .NET assemblies. As such, the main capability of this backdoor is to receive additional .NET payloads from the network and execute them.</p>
  204. <h2 id="tricky-attribution">Tricky attribution</h2>
  205. <p>Both Neursite and NeuralExecutor, the two custom implants we found to be used in the PassiveNeuron campaign, have never been observed in any previous cyberattacks. We had to look for clues that could hint at the threat actor behind PassiveNeuron.</p>
  206. <p>Back when we started investigating PassiveNeuron back in 2024, we spotted one such blatantly obvious clue:</p>
  207. <div id="attachment_117748" style="width: 915px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131215/passiveneuron-campaign-with-apt3.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117748" class="size-full wp-image-117748" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131215/passiveneuron-campaign-with-apt3.png" alt="Function names found inside NeuralExecutor" width="905" height="790" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131215/passiveneuron-campaign-with-apt3.png 905w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131215/passiveneuron-campaign-with-apt3-300x262.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131215/passiveneuron-campaign-with-apt3-768x670.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131215/passiveneuron-campaign-with-apt3-401x350.png 401w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131215/passiveneuron-campaign-with-apt3-740x646.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131215/passiveneuron-campaign-with-apt3-321x280.png 321w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131215/passiveneuron-campaign-with-apt3-800x698.png 800w" sizes="auto, (max-width: 905px) 100vw, 905px" /></a><p id="caption-attachment-117748" class="wp-caption-text">Function names found inside NeuralExecutor</p></div>
  208. <p>In the code of the NeuralExecutor samples we observed in 2024, the names of all functions had been replaced with strings prefixed with &#8220;Супер обфускатор&#8221;, the Russian for &#8220;Super obfuscator&#8221;. It is important to note, however, that this string was deliberately introduced by the attackers while using the ConfuserEx obfuscator. When it comes to strings that are inserted into malware on purpose, they should be assessed carefully during attribution. That is because threat actors may insert strings in languages they do not speak, in order to create false flags intended to confuse researchers and incident responders and prompt them to make an error of judgement when trying to attribute the threat. For that reason, we attached little evidential weight to the presence of the &#8220;Супер обфускатор&#8221; string back in 2024.</p>
  209. <p>After examining the NeuralExecutor samples used in 2025, we found that the Russian-language string had disappeared. However, this year we noticed another peculiar clue related to this implant. While the 2024 samples were designed to retrieve the C2 server addresses straight from the configuration, the 2025 ones did so by using <a href="https://attack.mitre.org/techniques/T1102/001/" target="_blank" rel="noopener">the Dead Drop Resolver technique</a>. Specifically, the new NeuralExecutor samples that we found were designed to retrieve the contents of a file stored in a GitHub repository, and extract a string from it:</p>
  210. <div id="attachment_117749" style="width: 1244px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131302/passiveneuron-campaign-with-apt4.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117749" class="size-full wp-image-117749" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131302/passiveneuron-campaign-with-apt4.png" alt="Contents of the configuration file stored on GitHub" width="1234" height="320" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131302/passiveneuron-campaign-with-apt4.png 1234w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131302/passiveneuron-campaign-with-apt4-300x78.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131302/passiveneuron-campaign-with-apt4-1024x266.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131302/passiveneuron-campaign-with-apt4-768x199.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131302/passiveneuron-campaign-with-apt4-740x192.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131302/passiveneuron-campaign-with-apt4-1080x280.png 1080w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131302/passiveneuron-campaign-with-apt4-800x207.png 800w" sizes="auto, (max-width: 1234px) 100vw, 1234px" /></a><p id="caption-attachment-117749" class="wp-caption-text">Contents of the configuration file stored on GitHub</p></div>
  211. <p>The malware locates this string by searching for two delimiters, <code>wtyyvZQY</code> and <code>stU7BU0R</code>, that mark the start and the end of the configuration data. The bytes of this string are then Base64-decoded and decrypted with AES to obtain the C2 server address.</p>
  212. <div id="attachment_117750" style="width: 2058px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131339/passiveneuron-campaign-with-apt5.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117750" class="size-full wp-image-117750" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131339/passiveneuron-campaign-with-apt5.png" alt="Snippet of the implant configuration" width="2048" height="375" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131339/passiveneuron-campaign-with-apt5.png 2048w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131339/passiveneuron-campaign-with-apt5-300x55.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131339/passiveneuron-campaign-with-apt5-1024x188.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131339/passiveneuron-campaign-with-apt5-768x141.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131339/passiveneuron-campaign-with-apt5-1536x281.png 1536w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131339/passiveneuron-campaign-with-apt5-1911x350.png 1911w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131339/passiveneuron-campaign-with-apt5-740x135.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131339/passiveneuron-campaign-with-apt5-1529x280.png 1529w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/14131339/passiveneuron-campaign-with-apt5-800x146.png 800w" sizes="auto, (max-width: 2048px) 100vw, 2048px" /></a><p id="caption-attachment-117750" class="wp-caption-text">Snippet of the implant configuration</p></div>
  213. <p>It is notable that this exact method of obtaining C2 server addresses from GitHub, using a string containing delimiter sequences, is quite popular among Chinese-speaking threat actors. For instance, we frequently <a href="https://securelist.com/eastwind-apt-campaign/113345/" target="_blank" rel="noopener">observed it being used in the EastWind campaign</a>, which we previously connected to the APT31 and APT27 Chinese-speaking threat actors.</p>
  214. <p>Furthermore, during our investigation, we learned one more interesting fact that could be useful in attribution. We observed numerous attempts to deploy the PassiveNeuron loader in one particular organization. After discovering yet another failed deployment, we have detected a malicious DLL named <code>imjp14k.dll</code>. An analysis of this DLL revealed that it had the PDB path G:\Bee\Tree(pmrc)\Src\Dll_3F_imjp14k\Release\Dll.pdb. This PDB string was referenced in a <a href="https://blog.talosintelligence.com/chinese-hacking-group-apt41-compromised-taiwanese-government-affiliated-research-institute-with-shadowpad-and-cobaltstrike-2/" target="_blank" rel="noopener">report by Cisco Talos</a> on activities likely associated with the threat actor APT41. Moreover, we identified that the discovered DLL exhibits the same malicious behavior as described in the Cisco Talos report. However, it remains unclear why this DLL was uploaded to the target machine. Possible explanations could be that the attackers deployed it as a replacement for the PassiveNeuron-related implants, or that it was used by another actor who compromised the organization simultaneously with the attackers behind PassiveNeuron.</p>
  215. <p>When dealing with attribution of cyberattacks that are known to involve false flags, it is difficult to understand which attribution indicators to trust, or whether to trust any at all. However, the overall TTPs of the PassiveNeuron campaign most resemble the ones commonly employed by Chinese-speaking threat actors. Since TTPs are usually harder to fake than indicators like strings, we are, as of now, attributing the PassiveNeuron campaign to a Chinese-speaking threat actor, albeit with a low level of confidence.</p>
  216. <h2 id="conclusion">Conclusion</h2>
  217. <p>The PassiveNeuron campaign has been distinctive in the way that it primarily targets server machines. These servers, especially the ones exposed to the internet, are usually lucrative targets for APTs, as they can serve as entry points into target organizations. It is thus crucial to pay close attention to the <a href="https://www.kaspersky.com/enterprise-security/xdr?icid=gl_sl_lnk-knext-xdr_sm-team_ed7c1cdf035e52cf" target="_blank" rel="noopener">protection of server machines</a>. Wherever possible, the attack surface associated with these servers should be reduced to a minimum, and all server applications should be monitored to prevent emerging infections in a timely manner. Specific attention should be paid to protecting applications against SQL injections, which are commonly exploited by threat actors to obtain initial access. Another thing to focus on is protection against web shells, which are deployed to facilitate compromise of servers.</p>
  218. <h2 id="indicators-of-compromise">Indicators of compromise</h2>
  219. <p><strong>PassiveNeuron-related loader files<br />
  220. </strong><a href="https://opentip.kaspersky.com/12ec42446db8039e2a2d8c22d7fd2946/results?icid=gl_sl_opentip_sm-team_efeb696a93e2484d&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">12ec42446db8039e2a2d8c22d7fd2946</a><br />
  221. <a href="https://opentip.kaspersky.com/406db41215f7d333db2f2c9d60c3958b/results?icid=gl_sl_opentip_sm-team_28bf60409c2f5827&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">406db41215f7d333db2f2c9d60c3958b</a><br />
  222. <a href="https://opentip.kaspersky.com/44a64331ec1c937a8385dfeeee6678fd/results?icid=gl_sl_opentip_sm-team_fea31a91566311f9&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">44a64331ec1c937a8385dfeeee6678fd</a><br />
  223. <a href="https://opentip.kaspersky.com/8dcf258f66fa0cec1e4a800fa1f6c2a2/results?icid=gl_sl_opentip_sm-team_88e2ae60d2364f2f&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">8dcf258f66fa0cec1e4a800fa1f6c2a2</a><br />
  224. <a href="https://opentip.kaspersky.com/d587724ade76218aa58c78523f6fa14e/results?icid=gl_sl_opentip_sm-team_94cdd0422e1d2b24&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">d587724ade76218aa58c78523f6fa14e</a><br />
  225. <a href="https://opentip.kaspersky.com/f806083c919e49aca3f301d082815b30/results?icid=gl_sl_opentip_sm-team_6bf7b46e7b929a05&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">f806083c919e49aca3f301d082815b30</a></p>
  226. <p><strong>Malicious imjp14k.dll DLL</strong><br />
  227. <a href="https://opentip.kaspersky.com/751f47a688ae075bba11cf0235f4f6ee/results?icid=gl_sl_opentip_sm-team_d79412667fa405bf&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">751f47a688ae075bba11cf0235f4f6ee</a></p>
  228. ]]></content:encoded>
  229. <wfw:commentRss>https://securelist.com/passiveneuron-campaign-with-apt-implants-and-cobalt-strike/117745/feed/</wfw:commentRss>
  230. <slash:comments>0</slash:comments>
  231. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/20163102/passiveneuron-featured-image-scaled.jpg" width="2912" height="1632"><media:keywords>full</media:keywords></media:content>
  232. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/20163102/passiveneuron-featured-image-1024x574.jpg" width="1024" height="574"><media:keywords>large</media:keywords></media:content>
  233. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/20163102/passiveneuron-featured-image-300x168.jpg" width="300" height="168"><media:keywords>medium</media:keywords></media:content>
  234. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/20163102/passiveneuron-featured-image-150x150.jpg" width="150" height="150"><media:keywords>thumbnail</media:keywords></media:content>
  235. </item>
  236. <item>
  237. <title>Post-exploitation framework now also delivered via npm</title>
  238. <link>https://securelist.com/adaptixc2-agent-found-in-an-npm-package/117784/</link>
  239. <comments>https://securelist.com/adaptixc2-agent-found-in-an-npm-package/117784/#respond</comments>
  240. <dc:creator><![CDATA[Vladimir Gursky, Artem Ushkov]]></dc:creator>
  241. <pubDate>Fri, 17 Oct 2025 10:00:33 +0000</pubDate>
  242. <category><![CDATA[Incidents]]></category>
  243. <category><![CDATA[Malware descriptions]]></category>
  244. <category><![CDATA[Malware Technologies]]></category>
  245. <category><![CDATA[Linux]]></category>
  246. <category><![CDATA[Microsoft Windows]]></category>
  247. <category><![CDATA[Apple MacOS]]></category>
  248. <category><![CDATA[x64]]></category>
  249. <category><![CDATA[Malware Descriptions]]></category>
  250. <category><![CDATA[ARM]]></category>
  251. <category><![CDATA[Malware]]></category>
  252. <category><![CDATA[Supply-chain attack]]></category>
  253. <category><![CDATA[Open source]]></category>
  254. <category><![CDATA[Windows malware]]></category>
  255. <category><![CDATA[Unix and macOS malware]]></category>
  256. <category><![CDATA[Web threats]]></category>
  257. <guid isPermaLink="false">https://kasperskycontenthub.com/securelist/?p=117784</guid>
  258.  
  259. <description><![CDATA[The npm registry contains a malicious package that downloads the AdaptixC2 agent onto victims' devices, Kaspersky experts have found. The threat targets Windows, Linux, and macOS.]]></description>
  260. <content:encoded><![CDATA[<p><img width="990" height="400" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17081221/adaptix-featured-image-990x400.jpg" class="attachment-securelist-huge-promo size-securelist-huge-promo wp-post-image" alt="" decoding="async" loading="lazy" /></p><h2 id="incident-description">Incident description</h2>
  261. <p>The first version of the AdaptixC2 post-exploitation framework, which can be considered an alternative to the well-known Cobalt Strike, was made publicly available in early 2025. In spring of 2025, the framework was <a href="https://x.com/Unit42_Intel/status/1925206262184026156" target="_blank" rel="noopener">first observed</a> being used for malicious means.</p>
  262. <p>In October 2025, Kaspersky experts found that the npm ecosystem contained a malicious package with a fairly convincing name: <code>https-proxy-utils</code>. It was posing as a utility for using proxies within projects. At the time of this post, the package had already been taken down.</p>
  263. <p>The name of the package closely resembles popular legitimate packages: <code>http-proxy-agent</code>, which has approximately 70 million weekly downloads, and <code>https-proxy-agent</code> with 90 million downloads respectively. Furthermore, the advertised proxy-related functionality was cloned from another popular legitimate package <code>proxy-from-env</code>, which boasts 50 million weekly downloads. However, the threat actor injected a post-install script into <code>https-proxy-utils</code>, which downloads and executes a payload containing the AdaptixC2 agent.</p>
  264. <div id="attachment_117785" style="width: 1486px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155133/adaptixc2-agent-found1.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117785" class="size-full wp-image-117785" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155133/adaptixc2-agent-found1.png" alt="Metadata for the malicious (left) and legitimate (right) packages" width="1476" height="518" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155133/adaptixc2-agent-found1.png 1476w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155133/adaptixc2-agent-found1-300x105.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155133/adaptixc2-agent-found1-1024x359.png 1024w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155133/adaptixc2-agent-found1-768x270.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155133/adaptixc2-agent-found1-997x350.png 997w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155133/adaptixc2-agent-found1-740x260.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155133/adaptixc2-agent-found1-798x280.png 798w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155133/adaptixc2-agent-found1-800x281.png 800w" sizes="auto, (max-width: 1476px) 100vw, 1476px" /></a><p id="caption-attachment-117785" class="wp-caption-text">Metadata for the malicious (left) and legitimate (right) packages</p></div>
  265. <h2 id="os-specific-adaptation">OS-specific adaptation</h2>
  266. <p>The script includes various payload delivery methods for different operating systems. The package includes loading mechanisms for Windows, Linux, and macOS. In each OS, it uses specific techniques involving system or user directories to load and launch the implant.</p>
  267. <p>In Windows, the AdaptixC2 agent is dropped as a DLL file into the system directory <code>C:\Windows\Tasks</code>. It is then executed via <a href="https://attack.mitre.org/techniques/T1574/001/" target="_blank" rel="noopener">DLL sideloading</a>. The JS script copies the legitimate <code>msdtc.exe</code> file to the same directory and executes it, thus loading the malicious DLL.</p>
  268. <div id="attachment_117786" style="width: 688px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155221/adaptixc2-agent-found2.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117786" class="size-full wp-image-117786" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155221/adaptixc2-agent-found2.png" alt="Deobfuscated Windows-specific code for loading AdaptixC2" width="678" height="569" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155221/adaptixc2-agent-found2.png 678w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155221/adaptixc2-agent-found2-300x252.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155221/adaptixc2-agent-found2-417x350.png 417w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155221/adaptixc2-agent-found2-334x280.png 334w" sizes="auto, (max-width: 678px) 100vw, 678px" /></a><p id="caption-attachment-117786" class="wp-caption-text">Deobfuscated Windows-specific code for loading AdaptixC2</p></div>
  269. <p>In macOS, the script downloads the payload as an executable file into the user&#8217;s autorun directory: <code>Library/LaunchAgents</code>. The <code>postinstall.js</code> script also drops a plist autorun configuration file into this directory. Before downloading AdaptixC2, the script checks the target architecture (x64 or ARM) and fetches the appropriate payload variant.</p>
  270. <div id="attachment_117787" style="width: 633px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155305/adaptixc2-agent-found3.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117787" class="size-full wp-image-117787" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155305/adaptixc2-agent-found3.png" alt="Deobfuscated macOS-specific code for loading AdaptixC2" width="623" height="726" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155305/adaptixc2-agent-found3.png 623w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155305/adaptixc2-agent-found3-257x300.png 257w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155305/adaptixc2-agent-found3-300x350.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155305/adaptixc2-agent-found3-240x280.png 240w" sizes="auto, (max-width: 623px) 100vw, 623px" /></a><p id="caption-attachment-117787" class="wp-caption-text">Deobfuscated macOS-specific code for loading AdaptixC2</p></div>
  271. <p>In Linux, the framework&#8217;s agent is downloaded into the temporary directory <code>/tmp/.fonts-unix</code>. The script delivers a binary file tailored to the specific architecture (x64 or ARM) and then assigns it execute permissions.</p>
  272. <div id="attachment_117788" style="width: 889px" class="wp-caption aligncenter"><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155351/adaptixc2-agent-found4.png" class="magnificImage"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-117788" class="size-full wp-image-117788" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155351/adaptixc2-agent-found4.png" alt="Deobfuscated Linux-specific code for loading AdaptixC2" width="879" height="549" srcset="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155351/adaptixc2-agent-found4.png 879w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155351/adaptixc2-agent-found4-300x187.png 300w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155351/adaptixc2-agent-found4-768x480.png 768w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155351/adaptixc2-agent-found4-560x350.png 560w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155351/adaptixc2-agent-found4-740x462.png 740w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155351/adaptixc2-agent-found4-448x280.png 448w, https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16155351/adaptixc2-agent-found4-800x500.png 800w" sizes="auto, (max-width: 879px) 100vw, 879px" /></a><p id="caption-attachment-117788" class="wp-caption-text">Deobfuscated Linux-specific code for loading AdaptixC2</p></div>
  273. <p>Once the AdaptixC2 framework agent is deployed on the victim&#8217;s device, the attacker gains capabilities for remote access, command execution, file and process management, and various methods for achieving persistence. This both allows the attacker to maintain consistent access and enables them to conduct network reconnaissance and deploy subsequent stages of the attack.</p>
  274. <h2 id="conclusion">Conclusion</h2>
  275. <p>This is not the first attack targeting the npm registry in recent memory. A month ago, similar infection methods utilizing a post-install script were employed in the <a href="https://securelist.com/shai-hulud-worm-infects-500-npm-packages-in-a-supply-chain-attack/117547/" target="_blank" rel="noopener">high-profile incident</a> involving the Shai-Hulud worm, which infected more than 500 packages<strong>. </strong>The AdaptixC2 incident clearly demonstrates the growing trend of abusing open-source software ecosystems, like npm, as an attack vector. Threat actors are <a href="https://securelist.com/tag/supply-chain-attack/" target="_blank" rel="noopener">increasingly exploiting the trusted open-source supply chain</a> to distribute post-exploitation framework agents and other forms of malware. Users and organizations involved in development or using open-source software from ecosystems like npm in their products are susceptible to this threat type.</p>
  276. <p>To stay safe, be vigilant when installing open-source modules: verify the exact name of the package you are downloading, and more thoroughly vet unpopular and new repositories. When using popular modules, it is critical to monitor <a href="https://www.kaspersky.com/open-source-feed?icid=gl_sl_post-link-open-source-feed_sm-team_cc8b77692a32ebbc" target="_blank" rel="noopener">frequently updated feeds on compromised packages and libraries</a>.</p>
  277. <h2 id="indicators-of-compromise">Indicators of compromise</h2>
  278. <p><strong>Package name</strong><br />
  279. https-proxy-utils</p>
  280. <p><strong>Hashes</strong><br />
  281. <a href="https://opentip.kaspersky.com/dfbc0606e16a89d980c9b674385b448e/results?icid=gl_sl_post-link-opentip_sm-team_9a4fb45257066833&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">DFBC0606E16A89D980C9B674385B448E</a> – package hash<br />
  282. <a href="https://opentip.kaspersky.com/b8e27a88730b124868c1390f3bc42709/results?icid=gl_sl_post-link-opentip_sm-team_c62dd3c8ffe2ed1b&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">B8E27A88730B124868C1390F3BC42709</a><br />
  283. <a href="https://opentip.kaspersky.com/669bdbef9e92c3526302ca37dc48d21f/results?icid=gl_sl_post-link-opentip_sm-team_972755ad1f67ef7f&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">669BDBEF9E92C3526302CA37DC48D21F</a><br />
  284. <a href="https://opentip.kaspersky.com/edac632c9b9ff2a2da0eacaab63627f4/results?icid=gl_sl_post-link-opentip_sm-team_cf39ec80bf7cdde8&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">EDAC632C9B9FF2A2DA0EACAAB63627F4</a><br />
  285. <a href="https://opentip.kaspersky.com/764c9e6b6f38df11dc752cb071ae26f9/results?icid=gl_sl_post-link-opentip_sm-team_375c37e00fb6f5e7&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">764C9E6B6F38DF11DC752CB071AE26F9</a><br />
  286. <a href="https://opentip.kaspersky.com/04931b7dfd123e6026b460d87d842897/results?icid=gl_sl_post-link-opentip_sm-team_76f48f8715dd6b3c&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">04931B7DFD123E6026B460D87D842897</a></p>
  287. <p><strong>Network indicators</strong><br />
  288. <a href="https://opentip.kaspersky.com/cloudcenter.top%2fsys%2fupdate/?icid=gl_sl_post-link-opentip_sm-team_67aaee30ceb5fe92&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">cloudcenter[.]top/sys/update</a><br />
  289. <a href="https://opentip.kaspersky.com/cloudcenter.top%2fmacos_update_arm/?icid=gl_sl_post-link-opentip_sm-team_87ea43b039efcf34&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">cloudcenter[.]top/macos_update_arm</a><br />
  290. <a href="https://opentip.kaspersky.com/cloudcenter.top%2fmacos_update_x64/?icid=gl_sl_post-link-opentip_sm-team_0bdec936559c877d&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">cloudcenter[.]top/macos_update_x64</a><br />
  291. <a href="https://opentip.kaspersky.com/cloudcenter.top%2fmacosupdate%5b.%5dplist/?icid=gl_sl_post-link-opentip_sm-team_423c8ff0ce467cbf&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">cloudcenter[.]top/macosUpdate[.]plist</a><br />
  292. <a href="https://opentip.kaspersky.com/cloudcenter.top%2flinux_update_x64/?icid=gl_sl_post-link-opentip_sm-team_9b4e0d2a0cdfec13&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">cloudcenter[.]top/linux_update_x64</a><br />
  293. <a href="https://opentip.kaspersky.com/cloudcenter.top%2flinux_update_arm/?icid=gl_sl_post-link-opentip_sm-team_16b93246956b263a&amp;utm_source=SL&amp;utm_medium=SL&amp;utm_campaign=SL" target="_blank" rel="noopener">cloudcenter[.]top/linux_update_arm</a></p>
  294. ]]></content:encoded>
  295. <wfw:commentRss>https://securelist.com/adaptixc2-agent-found-in-an-npm-package/117784/feed/</wfw:commentRss>
  296. <slash:comments>0</slash:comments>
  297. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17081221/adaptix-featured-image.jpg" width="2000" height="1000"><media:keywords>full</media:keywords></media:content>
  298. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17081221/adaptix-featured-image-1024x512.jpg" width="1024" height="512"><media:keywords>large</media:keywords></media:content>
  299. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17081221/adaptix-featured-image-300x150.jpg" width="300" height="150"><media:keywords>medium</media:keywords></media:content>
  300. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/17081221/adaptix-featured-image-150x150.jpg" width="150" height="150"><media:keywords>thumbnail</media:keywords></media:content>
  301. </item>
  302. <item>
  303. <title>SEO spam and hidden links: how to protect your website and your reputation</title>
  304. <link>https://securelist.com/seo-spam-hidden-links/117782/</link>
  305. <comments>https://securelist.com/seo-spam-hidden-links/117782/#respond</comments>
  306. <dc:creator><![CDATA[Anna Larkina]]></dc:creator>
  307. <pubDate>Fri, 17 Oct 2025 07:00:55 +0000</pubDate>
  308. <category><![CDATA[Publications]]></category>
  309. <category><![CDATA[Website Hacks]]></category>
  310. <category><![CDATA[Content Filtering]]></category>
  311. <category><![CDATA[XSS]]></category>
  312. <category><![CDATA[Vulnerabilities]]></category>
  313. <category><![CDATA[SQL injection]]></category>
  314. <category><![CDATA[SEO]]></category>
  315. <category><![CDATA[Black Hat SEO]]></category>
  316. <category><![CDATA[Web threats]]></category>
  317. <guid isPermaLink="false">https://kasperskycontenthub.com/securelist/?p=117782</guid>
  318.  
  319. <description><![CDATA[Are you seeing your website traffic drop, and security systems blocking it for pornographic content that is not there? Hidden links, a type of SEO spam, could be the cause.]]></description>
  320. <content:encoded><![CDATA[<p><img width="990" height="400" src="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16210132/SL-seo-spam-featured-990x400.jpg" class="attachment-securelist-huge-promo size-securelist-huge-promo wp-post-image" alt="" decoding="async" loading="lazy" /></p><p>When analyzing the content of websites in an attempt to determine what category it belongs to, we sometimes get an utterly unexpected result. It could be the official page of a metal structures manufacturer or online flower shop, or, say, a law firm website, with completely neutral content, but our solutions would place it squarely in the &#8220;Adult content&#8221; category. On the surface, it is completely unclear how our systems arrived at that verdict, but one look at the content categorization engine&#8217;s page analysis log clears it up.</p>
  321. <h2 id="invisible-html-block-or-seo-spam">Invisible HTML block, or SEO spam</h2>
  322. <p>The website falls into the questionable category because it contains an HTML block with links to third-party sites, invisible to regular users. These sites typically host content of a certain kind – which, in our experience, is most often pornographic or gambling materials – and in the hidden block, you will find relevant keywords along with the links. These practices are a type of Black Hat SEO, or SEO spam: the manipulation of website search rankings in violation of ethical search engine optimization (SEO) principles. Although there are many techniques that attackers use to raise or lower websites in search engine rankings, we have encountered hidden blocks more frequently lately, so this is what this post focuses on.</p>
  323. <p>Website owners rarely suspect a problem until they face obvious negative consequences, such as a sharp drop in traffic, warnings from search engines, or complaints from visitors. Those who use Kaspersky solutions may see their sites blocked due to being categorized as prohibited, a sign that something is wrong with them. Our engine detects both links and their descriptions that are present in a block like that.</p>
  324. <h2 id="how-hidden-links-work">How hidden links work</h2>
  325. <p>Hyperlinks that are invisible to regular users but still can be scanned by various analytical systems, such as search engines or our web categorization engine, are known as &#8220;hidden links&#8221;. They are often used for scams, inflating website rankings (positions in search results), or pushing down the ranking of a victim website.</p>
  326. <p>To understand how this works, let us look at how today&#8217;s SEO functions in the first place. A series of algorithms is responsible for ranking websites in search results, such as those served by Google. The oldest and most relevant one to this article is known as <a href="https://en.wikipedia.org/wiki/PageRank" target="_blank" rel="noopener">PageRank</a>. The PageRank metric, or weight in the context of this algorithm, is a numerical value that determines the importance of a specific page. The higher the number of links from other websites pointing to a page, and the greater those websites&#8217; own weights, the higher the page&#8217;s PageRank.</p>
  327. <p>So, to boost their own website&#8217;s ranking in search results, the malicious actor places hidden links to it on the victim website. The higher the victim website&#8217;s PageRank, the more attractive it is to the attacker. High-traffic platforms like blogs or forums are of particular interest to them.</p>
  328. <p>However, PageRank is no longer the only method search engines use to measure a website&#8217;s value. Google, for example, also applies other algorithms, such as the artificial intelligence-based <a href="https://en.wikipedia.org/wiki/RankBrain" target="_blank" rel="noopener">RankBrain</a> or the <a href="https://en.wikipedia.org/wiki/BERT_(language_model)" target="_blank" rel="noopener">BERT language model</a>. These algorithms use more sophisticated metrics, such as <a href="https://en.wikipedia.org/wiki/Domain_authority" target="_blank" rel="noopener">Domain Authority</a> (that is, how much authority the website has on the subject the user is asking about), link quality, and context. Placing links on a website with a high PageRank can still be beneficial, but this tactic has a severely limited effect due to advanced algorithms and filters aimed at demoting sites that break the search engine&#8217;s rules. Examples of these filters are as follows:</p>
  329. <ul>
  330. <li><a href="https://en.wikipedia.org/wiki/Google_Penguin" target="_blank" rel="noopener">Google Penguin</a>, which identifies and penalizes websites that use poor-quality or manipulative links, including hidden ones, to boost their own rankings. When links like these are detected, their weight can be zeroed out, and the ranking may be lowered for both sites: the victim and the spam website.</li>
  331. <li><a href="https://en.wikipedia.org/wiki/Google_Panda" target="_blank" rel="noopener">Google Panda</a>, which evaluates content quality. If the website has a high PageRank, but the content is of low quality, duplicated, auto-generated, or otherwise substandard, the site may be demoted.</li>
  332. <li><a href="https://spambrain.com/" target="_blank" rel="noopener">Google SpamBrain</a>, which uses machine learning to analyze HTML markup, page layouts, and so forth to identify manipulative patterns. This algorithm is integrated into Google Penguin.</li>
  333. </ul>
  334. <h2 id="what-a-black-hat-seo-block-looks-like-in-a-pages-html-markup">What a Black Hat SEO block looks like in a page&#8217;s HTML markup</h2>
  335. <p>Let us look at some real examples of hidden blocks we have seen on legitimate websites and determine the attributes by which these blocks can be identified.</p>
  336. <h3 id="example-1">Example 1</h3>
  337. <pre class="urvanov-syntax-highlighter-plain-tag">&lt;div style="display: none;"&gt;
  338. افلام سكس اعتصاب &lt;a href="https://www.azcorts.com/" rel="dofollow" target="_self"&gt;azcorts.com&lt;/a&gt; قنوات جنسية
  339. free indian porn com &lt;a href="https://porngun.mobi" target="_self"&gt;porngun.mobi&lt;/a&gt; xharmaster
  340. 石原莉紅 &lt;a href="https://javclips.mobi/" target="_blank" title="javclips.mobi"&gt;javclips.mobi&lt;/a&gt; ちっぱい
  341. bank porn &lt;a href="https://pimpmpegs.net" target="_self" title="pimpmpegs.net free video porn"&gt;pimpmpegs.net&lt;/a&gt; wwwporm
  342. salamat lyrics tagalog &lt;a href="https://www.teleseryeone.com/" target="_blank" title="teleseryeone.com sandro marcos alexa miro"&gt;teleseryeone.com&lt;/a&gt; play desi
  343. &lt;/div&gt;
  344. &lt;div style="display: none;"&gt;
  345. كسى بيوجعنى &lt;a href="https://www.sexdejt.org/" rel="dofollow"&gt;sexdejt.org&lt;/a&gt; سكس سانى
  346. indian sex video bp &lt;a href="https://directorio-porno.com/" rel="dofollow" target="_self" title="directorio-porno.com"&gt;directorio-porno.com&lt;/a&gt; xvideos indian pussy
  347. swara bhaskar porn &lt;a href="https://greenporn.mobi" title="greenporn.mobi lesbian porn hq"&gt;greenporn.mobi&lt;/a&gt; kannada sexy video
  348. bp sex full &lt;a href="https://tubepornmix.info" target="_blank" title="tubepornmix.info aloha tube porn video"&gt;tubepornmix.info&lt;/a&gt; lily sex
  349. pinayflix pamasahe &lt;a href="https://www.gmateleserye.com/" rel="dofollow" target="_blank"&gt;gmateleserye.com&lt;/a&gt; family feud november 17
  350. &lt;/div&gt;
  351. &lt;div style="display: none;"&gt;
  352. sunny leone ki bp download &lt;a href="https://eroebony.info" target="_self" title="eroebony.info"&gt;eroebony.info&lt;/a&gt; hansika xvideos
  353. موقع سكس ايطالى &lt;a href="https://bibshe.com/" target="_self" title="bibshe.com سكس العادة السرية"&gt;bibshe.com&lt;/a&gt; صور احلى كس
  354. raja rani coupon result &lt;a href="https://booketube.mobi" rel="dofollow"&gt;booketube.mobi&lt;/a&gt; exercise sex videos
  355. indianbadwap &lt;a href="https://likeporn.mobi" rel="dofollow" target="_blank" title="likeporn.mobi free hd porn"&gt;likeporn.mobi&lt;/a&gt; rabi pirzada nude video
  356. marathi porn vidio &lt;a href="https://rajwap.biz" rel="dofollow" target="_blank" title="rajwap.biz"&gt;rajwap.biz&lt;/a&gt; www.livesex.com
  357. &lt;/div&gt;</pre>
  358. This example utilizes a simple CSS style,
  359. <span id="urvanov-syntax-highlighter-68f7ac2ed39fd942765759" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-o">&lt;</span><span class="crayon-e">div </span><span class="crayon-v">style</span><span class="crayon-o">=</span><span class="crayon-s">"display: none;"</span><span class="crayon-o">&gt;</span></span></span>. This is one of the most basic and widely known methods for concealing content; the parameter
  360. <span id="urvanov-syntax-highlighter-68f7ac2ed3a29949346588" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-v">display</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-v">none</span></span></span>; stands for &#8220;do not display&#8221;. We also see that each invisible
  361. <span id="urvanov-syntax-highlighter-68f7ac2ed3a2d523812603" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-o">&lt;</span><span class="crayon-v">div</span><span class="crayon-o">&gt;</span></span></span> section contains a set of links to low-quality pornographic websites along with their keyword-stuffed descriptions. This clearly indicates spam, as the website where we found this block has no relation whatsoever to the type of content being linked to.</p>
  362. <p>Another sign of Black Hat SEO in the example is the attribute
  363. <span id="urvanov-syntax-highlighter-68f7ac2ed3a2f609918225" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-v">rel</span><span class="crayon-o">=</span><span class="crayon-s">"dofollow"</span></span></span>. This instructs search engines that the link carries link juice, meaning it passes weight. Spammers intentionally set this attribute to transfer authority from the victim website to the ones they are promoting. In standard practice, webmasters may, conversely, use
  364. <span id="urvanov-syntax-highlighter-68f7ac2ed3a31474861181" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-v">rel</span><span class="crayon-o">=</span><span class="crayon-s">"nofollow"</span></span></span>, which signifies that the presence of the link on the site should not influence the ranking of the website where it leads.</p>
  365. <p>Thus, the combination of a hidden block (
  366. <span id="urvanov-syntax-highlighter-68f7ac2ed3a33990218168" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-v">display</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-v">none</span><span class="crayon-sy">;</span></span></span>) and a set of external pornographic (in this instance) links with the
  367. <span id="urvanov-syntax-highlighter-68f7ac2ed3a35980258040" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-v">rel</span><span class="crayon-o">=</span><span class="crayon-s">"dofollow"</span></span></span> attribute unequivocally point to a SEO spam injection.</p>
  368. <p>Note that all
  369. <span id="urvanov-syntax-highlighter-68f7ac2ed3a37436682779" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-o">&lt;</span><span class="crayon-v">div</span><span class="crayon-o">&gt;</span></span></span> sections are concentrated in one spot, at the end of the page, rather than scattered throughout the page code. This block demonstrates a classic Black Hat SEO approach.</p>
  370. <h3 id="example-2">Example 2</h3>
  371. <pre class="urvanov-syntax-highlighter-plain-tag">&lt;div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;"&gt;سكس انجليز &lt;a href="https://wfporn.com/" target="_self" title="wfporn.com افلام سحاق مترجم"&gt;wfporn.com&lt;/a&gt; سكس كلاسيك مترجم&lt;/div&gt;
  372. &lt;div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;"&gt;فيلم سكس &lt;a href="https://www.keep-porn.com/" rel="dofollow" target="_blank"&gt;keep-porn.com&lt;/a&gt; سكس هندى اغتصاب&lt;/div&gt;
  373. &lt;div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;"&gt;desi nude tumbler &lt;a href="https://www.desixxxv.net" title="desixxxv.net free hd porn video"&gt;desixxxv.net&lt;/a&gt; kanpur sexy video&lt;/div&gt;
  374. &lt;div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;"&gt;www wap sex video com &lt;a href="https://pornorado.mobi" target="_self"&gt;pornorado.mobi&lt;/a&gt; sexy film video mp4&lt;/div&gt;
  375. &lt;div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;"&gt;mom yes porn please &lt;a href="https://www.movsmo.net/" rel="dofollow" title="movsmo.net"&gt;movsmo.net&lt;/a&gt; yes porn please brazzers&lt;/div&gt;
  376. &lt;div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;"&gt;xxx download hd &lt;a href="https://fuxee.mobi" title="fuxee.mobi"&gt;fuxee.mobi&lt;/a&gt; fat woman sex&lt;/div&gt;
  377. &lt;div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;"&gt;bangalore xxx &lt;a href="https://bigassporntrends.com" rel="dofollow" target="_self" title="bigassporntrends.com"&gt;bigassporntrends.com&lt;/a&gt; sexy video kashmir&lt;/div&gt;
  378. &lt;div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;"&gt;xnxx sister sex &lt;a href="https://wetwap.info" rel="dofollow" target="_self" title="wetwap.info hd porn streaming"&gt;wetwap.info&lt;/a&gt; blue film a video&lt;/div&gt;
  379. &lt;div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;"&gt;tamilschoolsexvideo &lt;a href="https://tubetria.mobi" rel="dofollow" title="tubetria.mobi"&gt;tubetria.mobi&lt;/a&gt; sex free videos&lt;/div&gt;
  380. &lt;div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;"&gt;سكس من اجل المال مترجم &lt;a href="https://www.yesexyporn.com/" title="yesexyporn.com فوائد لحس الكس"&gt;yesexyporn.com&lt;/a&gt; نسوان شرميط&lt;/div&gt;
  381. &lt;div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;"&gt;kamapishi &lt;a href="https://desisexy.org/" target="_blank" title="desisexy.org free porn gay hd online"&gt;desisexy.org&lt;/a&gt; savita bhabhi xvideo&lt;/div&gt;
  382. &lt;div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;"&gt;aflamk2 &lt;a href="https://www.pornvideoswatch.net/" target="_self" title="pornvideoswatch.net"&gt;pornvideoswatch.net&lt;/a&gt; نيك ثمينات&lt;/div&gt;
  383. &lt;div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;"&gt;hentaifox futanari &lt;a href="https://www.hentaitale.net/" target="_blank" title="hentaitale.net pisuhame"&gt;hentaitale.net&lt;/a&gt; hen hentai&lt;/div&gt;
  384. &lt;div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;"&gt;video sexy wallpaper &lt;a href="https://povporntrends.com" target="_blank"&gt;povporntrends.com&lt;/a&gt; bengolibf&lt;/div&gt;
  385. &lt;div style="overflow: auto; position: absolute; height: 0pt; width: 0pt;"&gt;persona 5 hentai manga &lt;a href="https://www.younghentai.net/" rel="dofollow" target="_self" title="younghentai.net oni hentai"&gt;younghentai.net&lt;/a&gt; toys hentai&lt;/div&gt;</pre>
  386. This example demonstrates a slightly more sophisticated approach to hiding the block containing Black Hat SEO content. It suggests an attempt to bypass the automated search engine filters that easily detect the
  387. <span id="urvanov-syntax-highlighter-68f7ac2ed3a3b888549912" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-v">display</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-v">none</span><span class="crayon-sy">;</span></span></span> parameter.</p>
  388. <p>Let us analyze the set of CSS styles:
  389. <span id="urvanov-syntax-highlighter-68f7ac2ed3a48616025787" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-o">&lt;</span><span class="crayon-e">div </span><span class="crayon-v">style</span><span class="crayon-o">=</span><span class="crayon-s">"overflow: auto; position: absolute; height: 0pt; width: 0pt;"</span><span class="crayon-o">&gt;</span></span></span>. The properties position:
  390. <span id="urvanov-syntax-highlighter-68f7ac2ed3a4a109037157" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-v">absolute</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-v">height</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">0pt</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-v">width</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">0pt</span><span class="crayon-sy">;</span></span></span> remove the block from the visible area of the page, while overflow: auto prevents the content from being displayed even if it exceeds zero dimensions. This makes the links inaccessible to humans, but it does not prevent them from being preserved in the <a href="https://en.wikipedia.org/wiki/Document_Object_Model" target="_blank" rel="noopener">DOM (document object model)</a>. That&#8217;s why HTML code scanning systems, such as search engines, are able to see it.</p>
  391. <p>In addition to the zero dimensions of the block, in this example, just as in the previous one, we see the attribute
  392. <span id="urvanov-syntax-highlighter-68f7ac2ed3a4c233869869" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-v">rel</span><span class="crayon-o">=</span><span class="crayon-s">"dofollow"</span></span></span>, as well as many links to pornographic websites with relevant keywords.</p>
  393. <p>The combination of styles that sets the block dimensions to zero is less obvious than
  394. <span id="urvanov-syntax-highlighter-68f7ac2ed3a4e609517983" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-v">display</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-v">none</span><span class="crayon-sy">;</span></span></span> because the element is technically present in the rendering, although it is not visible to the user. Nevertheless, it is worth noting that modern search engine security algorithms, such as Google Penguin, detect this technique too. To counter this, malicious actors may employ more complex techniques for evading detection. Here is another example:</p><pre class="urvanov-syntax-highlighter-plain-tag">&lt;script src="files/layout/js/slider3d.js?v=0d6651e2"&gt;&lt;/script&gt;&lt;script src="files/layout/js/layout.js?v=51a52ad1"&gt;&lt;/script&gt;
  395. &lt;style type="text/css"&gt;.ads-gold {height: 280px;overflow: auto;color: transparent;}.ads-gold::-webkit-scrollbar {  display: none;}.ads-gold a {color: transparent;}.ads-gold {font-size: 10px;}.ads-gold {height: 0px;overflow: hidden;}&lt;/style&gt;
  396. &lt;div class="ads-gold"&gt;
  397. Ganhe Rápido nos Jogos Populares do Cassino Online &lt;a href="https://580-bet.com" target="_blank"&gt;580bet&lt;/a&gt;
  398. Cassino &lt;a href="https://bet-7k.com" target="_blank"&gt;bet 7k&lt;/a&gt;: Diversão e Grandes Vitórias Esperam por Você
  399. Aposte e Vença no Cassino &lt;a href="https://leao-88.com" target="_blank"&gt;leao&lt;/a&gt; – Jogos Fáceis e Populares
  400. Jogos Populares e Grandes Prêmios no Cassino Online &lt;a href="https://luck-2.com" target="_blank"&gt;luck 2&lt;/a&gt;
  401. Descubra os Jogos Mais Populares no Cassino &lt;a href="https://john-bet.com" target="_blank"&gt;john bet&lt;/a&gt; e Ganhe
  402. &lt;a href="https://7755-bet.com" target="_blank"&gt;7755 bet&lt;/a&gt;: Apostas Fáceis, Grandes Oportunidades de Vitória
  403. Jogue no Cassino Online &lt;a href="https://cbet-88.com" target="_blank"&gt;cbet&lt;/a&gt; e Aumente suas Chances de Ganhar
  404. Ganhe Prêmios Incríveis com Jogos Populares no Cassino &lt;a href="https://bet7-88.com" target="_blank"&gt;bet7&lt;/a&gt;
  405. Cassino &lt;a href="https://pk55-88.com" target="_blank"&gt;pk55&lt;/a&gt;: Onde a Sorte Está ao Seu Lado
  406. Experimente o Cassino &lt;a href="https://8800-bet.com" target="_blank"&gt;8800 bet&lt;/a&gt; e Ganhe com Jogos Populares
  407. Ganhe Facilmente no Cassino Online &lt;a href="https://doce-88.com" target="_blank"&gt;doce&lt;/a&gt;
  408. Aposte e Vença no Cassino &lt;a href="https://bet-4-br.com" target="_blank"&gt;bet 4&lt;/a&gt;
  409. Jogos Populares e Grandes Premiações na &lt;a href="https://f12--bet.com" target="_blank"&gt;f12bet&lt;/a&gt;
  410. Descubra a Diversão e Vitória no Cassino &lt;a href="https://bet-7-br.com" target="_blank"&gt;bet7&lt;/a&gt;
  411. Aposte nos Jogos Mais Populares do Cassino &lt;a href="https://ggbet-88.com" target="_blank"&gt;ggbet&lt;/a&gt;
  412. Ganhe Prêmios Rápidos no Cassino Online &lt;a href="https://bet77-88.com" target="_blank"&gt;bet77&lt;/a&gt;
  413. Jogos Fáceis e Rápidos no Cassino &lt;a href="https://mrbet-88.com" target="_blank"&gt;mrbet&lt;/a&gt;
  414. Jogue e Ganhe com Facilidade no Cassino &lt;a href="https://bet61-88.com" target="_blank"&gt;bet61&lt;/a&gt;
  415. Cassino &lt;a href="https://tvbet-88.com" target="_blank"&gt;tvbet&lt;/a&gt;: Onde a Sorte Está Ao Seu Lado
  416. Aposte nos Melhores Jogos do Cassino Online &lt;a href="https://pgwin-88.com" target="_blank"&gt;pgwin&lt;/a&gt;
  417. Ganhe Grande no Cassino &lt;a href="https://today-88.com" target="_blank"&gt;today&lt;/a&gt; com Jogos Populares
  418. Cassino &lt;a href="https://fuwin-88.com" target="_blank"&gt;fuwin&lt;/a&gt;: Grandes Vitórias Esperam por Você
  419. Experimente os Melhores Jogos no Cassino &lt;a href="https://brwin-88.com" target="_blank"&gt;brwin&lt;/a&gt;
  420. &lt;/div&gt;&lt;/body&gt;</pre><p>
  421. Aside from the parameters we are already familiar with, which are responsible for concealing a block (
  422. <span id="urvanov-syntax-highlighter-68f7ac2ed3a52976172691" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-v">height</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">0px</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">color</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-v">transparent</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">overflow</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-v">hidden</span></span></span>), and the name that hints at its contents (
  423. <span id="urvanov-syntax-highlighter-68f7ac2ed3a54396643866" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-sy">\</span><span class="crayon-o">&lt;</span><span class="crayon-e">style </span><span class="crayon-v">type</span><span class="crayon-o">=</span><span class="crayon-s">"text/css"</span><span class="crayon-sy">\</span><span class="crayon-o">&gt;</span><span class="crayon-sy">.</span><span class="crayon-v">ads</span><span class="crayon-o">-</span><span class="crayon-v">gold</span></span></span>), strings with scripts in this example can be found at the very beginning:
  424. <span id="urvanov-syntax-highlighter-68f7ac2ed3a56850215013" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-ta">&lt;script </span><span class="crayon-e ">src</span><span class="crayon-o">=</span><span class="crayon-s">"files/layout/js/slider3d.js?v=0d6651e2"</span><span class="crayon-o">&gt;</span><span class="crayon-ta">&lt;/script&gt;</span></span></span> and
  425. <span id="urvanov-syntax-highlighter-68f7ac2ed3a58197612789" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-ta">&lt;script </span><span class="crayon-e ">src</span><span class="crayon-o">=</span><span class="crayon-s">"files/layout/js/layout.js?v=51a52ad1"</span><span class="crayon-o">&gt;</span><span class="crayon-ta">&lt;/script&gt;</span></span></span>. These indicate that external JavaScript can dynamically control the page content, for example, by adding or changing hidden links, that is, modifying this block in real time.</p>
  426. <p>This is a more advanced approach than the ones in the previous examples. Yet it is also detected by filters responsible for identifying suspicious manipulations.</p>
  427. <p>Other parameters and attributes exist that attackers use to conceal a link block. These, however, can also be detected:</p>
  428. <ul>
  429. <li>the parameter
  430. <span id="urvanov-syntax-highlighter-68f7ac2ed3a5a725040589" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-v">visibility</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-v">hidden</span><span class="crayon-sy">;</span></span></span> can sometimes be seen instead of
  431. <span id="urvanov-syntax-highlighter-68f7ac2ed3a5c489373822" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-v">display</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-v">none</span><span class="crayon-sy">;</span></span></span>.</li>
  432. <li>Within
  433. <span id="urvanov-syntax-highlighter-68f7ac2ed3a5e597759334" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-v">position</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-v">absolute</span><span class="crayon-sy">;</span></span></span>, the block with hidden links may not have a zero size, but rather be located far beyond the visible area of the page. This can be set, for example, via the property
  434. <span id="urvanov-syntax-highlighter-68f7ac2ed3a60001831097" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-v">left</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-o">-</span><span class="crayon-cn">9232px</span><span class="crayon-sy">;</span></span></span>, as in the example below.</li>
  435. </ul>
  436. <pre class="urvanov-syntax-highlighter-plain-tag">&lt;div style="position: absolute; left: -9232px"&gt;
  437. &lt;a href="https://romabet.cam/"&gt;روما بت&lt;/a&gt;&lt;br&gt;
  438. &lt;a href="https://mahbet.cam/"&gt;ماه بت&lt;/a&gt;&lt;br&gt;
  439. &lt;a href="https://pinbahis.com.co/"&gt;پین باهیس&lt;/a&gt;&lt;br&gt;
  440. &lt;a href="https://bettingmagazine.org/"&gt;بهترین سایت شرط بندی&lt;/a&gt;&lt;br&gt;
  441. &lt;a href="https://1betcart.com/"&gt;بت کارت&lt;/a&gt;&lt;br&gt;
  442. &lt;a href="https:// yasbet.com.co/"&gt;یاس بت&lt;/a&gt;&lt;br&gt;
  443. &lt;a href="https://yekbet.cam/"&gt;یک بت&lt;/a&gt;&lt;br&gt;
  444. &lt;a href="https://megapari.cam/"&gt;مگاپاری &lt;/a&gt;&lt;br&gt;
  445. &lt;a href="https://onjabet.net/"&gt;اونجا بت&lt;/a&gt;&lt;br&gt;
  446. &lt;a href="https://alvinbet.org/"&gt;alvinbet.org&lt;/a&gt;&lt;br&gt;
  447. &lt;a href="https://2betboro.com/"&gt;بت برو&lt;/a&gt;&lt;br&gt;
  448. &lt;a href="https://betfa.cam/"&gt;بت فا&lt;/a&gt;&lt;br&gt;
  449. &lt;a href="https://betforward.help/"&gt;بت فوروارد&lt;/a&gt;&lt;br&gt;
  450. &lt;a href="https://1xbete.org/"&gt;وان ایکس بت&lt;/a&gt;&lt;br&gt;
  451. &lt;a href="https://1win-giris.com.co/"&gt;1win giriş&lt;/a&gt;&lt;br&gt;
  452. &lt;a href="https://betwiner.org/"&gt;بت وینر&lt;/a&gt;&lt;br&gt;
  453. &lt;a href="https://4shart.com/"&gt;بهترین سایت شرط بندی ایرانی&lt;/a&gt;&lt;br&gt;
  454. &lt;a href="https://1xbetgiris.cam"&gt;1xbet giriş&lt;/a&gt;&lt;br&gt;
  455. &lt;a href="https://1kickbet1.com/"&gt;وان کیک بت&lt;/a&gt;&lt;br&gt;
  456. &lt;a href="https://winbet-bet.com/"&gt;وین بت&lt;/a&gt;&lt;br&gt;
  457. &lt;a href="https://ritzobet.org/"&gt;ریتزو بت&lt;/a&gt;&lt;br&gt;</pre>
  458. <h2 id="how-attackers-place-hidden-links-on-other-peoples-websites">How attackers place hidden links on other people&#8217;s websites</h2>
  459. <p>To place hidden links, attackers typically exploit website configuration errors and vulnerabilities. This may be a weak or compromised password for an administrator account, plugins or an engine that have not been updated in a long time, poor filtering of user inputs, or security issues on the hosting provider&#8217;s side. Furthermore, attackers may attempt to exploit the human factor, for example, by setting up targeted or mass phishing attacks in the hope of obtaining the website administrator&#8217;s credentials.</p>
  460. <p>Let us examine in detail the various mechanisms through which an attacker gains access to editing a page&#8217;s HTML code.</p>
  461. <ul>
  462. <li><strong>Compromise of the administrator password</strong>. An attacker may guess the password, use phishing to trick the victim into giving it away, or steal it with the help of malware. Furthermore, the password may be found in a database of leaked credentials. Site administrators frequently use simple passwords for control panel protection or, even worse, leave the default password, thereby simplifying the task for the attacker.<br />
  463. After gaining access to the admin panel, the attacker can directly edit the page&#8217;s HTML code or install their own plugins with hidden SEO blocks.</li>
  464. <li><strong>Exploitation of CMS (WordPress, Joomla, Drupal) vulnerabilities</strong>. If the engine or plugins are out of date, attackers use known vulnerabilities (SQL Injection, RCE, or XSS) to gain access to the site&#8217;s code. After that, depending on the level of access gained by exploiting the vulnerability, they can modify template files (header.php, footer.php, index.php, etc.), insert invisible blocks into arbitrary site pages, and so on.<br />
  465. In SQL injection attacks, the hacker injects their malicious SQL code into a database query. Many websites, from news portals to online stores, store their content (text, product descriptions, and news) in a database. If an SQL query, such as
  466. <span id="urvanov-syntax-highlighter-68f7ac2ed3a65958827777" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-e ">SELECT *</span><span class="crayon-h"> </span><span class="crayon-e">FROM </span><span class="crayon-e">posts </span><span class="crayon-e">WHERE </span><span class="crayon-v">id</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-s">'$id'</span></span></span> allows passing arbitrary data, the attacker can use the
  467. <span id="urvanov-syntax-highlighter-68f7ac2ed3a67095356611" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-sy">$</span><span class="crayon-v">id</span></span></span> field to inject their code. This allows the attacker to change the content of records, for example, by inserting HTML with hidden blocks.<br />
  468. In RCE (remote code execution) attacks, the attacker gains the ability to run their own commands on the server where the website runs. Unlike SQL injections, which are limited to the database, RCE provides almost complete control over the system. For example, it allows the attacker to create or modify site files, upload malicious scripts, and, of course, inject invisible blocks.<br />
  469. In an XSS (cross-site scripting) attack, the attacker injects their JavaScript code directly into the web page by using vulnerable input fields, such as those for comments or search queries. When another user visits this page, the malicious script automatically executes in their browser. Such a script enables the attacker to perform various malicious actions, including stealthily adding a hidden
  470. <span id="urvanov-syntax-highlighter-68f7ac2ed3a69255157078" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-o">&lt;</span><span class="crayon-v">div</span><span class="crayon-o">&gt;</span></span></span> block with invisible links to the page. For XSS, the attacker does not need direct access to the server or database, as in the case with SQL injection or RCE; they only need to find a single vulnerability on the website.</li>
  471. <li><strong>An attack via the hosting provider</strong>. In addition to directly hacking the target website, an attacker may attempt to gain access to the website through the hosting environment. If the hosting provider&#8217;s server is poorly secured, there is a risk of it being compromised. Furthermore, if multiple websites or web applications run on the same server, a vulnerability in one of them can jeopardize all other projects. The attacker&#8217;s capabilities depend on the level of access to the server. These capabilities may include: injecting hidden blocks into page templates, substituting files, modifying databases, connecting external scripts to multiple websites simultaneously, and so forth. Meanwhile, the website administrator may not notice the problem because the vulnerability is being exploited within the server environment rather than the website code.</li>
  472. </ul>
  473. <p>Note that hidden links appearing on a website is not always a sign of a cyberattack. The issue often arises during the development phase, for example, if an illegal copy of a template is downloaded to save money or if the project is executed by an unscrupulous web developer.</p>
  474. <h2 id="why-attackers-place-hidden-blocks-on-websites">Why attackers place hidden blocks on websites</h2>
  475. <p>One of the most obvious goals for injecting hidden blocks into other people&#8217;s websites is to steal the PageRank from the victim. The more popular and authoritative the website is, the more interesting it is to attackers. However, this does not mean that moderate- or low-traffic websites are safe. As a rule, administrators of popular websites and large platforms do their best to adhere to security rules, so it is not so easy to get close to them. Therefore, attackers may target less popular – and less protected – websites.</p>
  476. <p>As previously mentioned, this approach to promoting websites is easily detected and blocked by search engines. In the short term, though, attackers still benefit from this: they manage to drive traffic to the websites that interest them until search engine algorithms detect the violation.</p>
  477. <p>Even though the user does not see the hidden block and cannot click the links, attackers can use scripts to boost traffic to their websites. One possible scenario involves JavaScript creating an iframe in the background or sending an HTTP request to the website from the hidden block, which then receives information about the visit.</p>
  478. <p>Hidden links can lead not just to pornographic or other questionable websites but also to websites with low-quality content whose sole purpose is to be promoted and subsequently sold, or to phishing and malicious websites. In more sophisticated schemes, the script that provides &#8220;visits&#8221; to such websites may load malicious code into the victim&#8217;s browser.</p>
  479. <p>Finally, hidden links allow attackers to lower the reputation of the targeted website and harm its standing with search engines. This threat is especially relevant in light of the fact that algorithms such as Google Penguin penalize websites hosting questionable links. Attackers may use these techniques as a tool for unfair competition, hacktivism, or any other activity that involves discrediting certain organizations or individuals.</p>
  480. <p>Interestingly, in 2025, we have more frequently encountered hidden blocks with links to pornographic websites and online casinos on various legitimate websites. With low confidence, we can suggest that this is partly due to the development of neural networks, which make it easy to automate such attacks, and partly due to the regular <a href="https://developers.google.com/search/docs/appearance/spam-updates" target="_blank" rel="noopener">updates to Google&#8217;s anti-spam systems</a>, the latest of which was completed at the end of September 2025: attackers may have rushed to maximize their gains before the search engine made it a little harder for them.</p>
  481. <h2 id="consequences-for-the-victim-website">Consequences for the victim website</h2>
  482. <p>The consequences for the victim website can vary in severity. At a minimum, the presence of hidden links placed by unauthorized parties hurts search engine reputation, which may lead to lower search rankings or even complete exclusion from search results. However, even without any penalties, the links disrupt the internal linking structure because they lead to external websites and pass on a portion of the victim&#8217;s weight to them. This negatively impacts the rankings of key pages.</p>
  483. <p>Although unseen by visitors, hidden links can be discovered by external auditors, content analysis systems, or researchers who report such findings in public reports. This is something that can undermine trust in the website. For example, sites where our categorization engine detects links to pornography pages will be classified as &#8220;Adult content&#8221;. Consequently, all of our clients who use web filters to block this category will be unable to visit the website. Furthermore, information about a website&#8217;s category is published on our <a href="https://opentip.kaspersky.com/" target="_blank" rel="noopener">Kaspersky Threat Intelligence Portal</a> and available to anyone wishing to look up its reputation.</p>
  484. <p>If the website is being used to distribute illegal or fraudulent content, the issue enters the legal realm, with the owner potentially facing lawsuits from copyright holders or regulators. For example, if the links lead to websites that distribute pirated content, the site may be considered an intermediary in copyright infringement. If the hidden block contains malicious scripts or automatic redirects to questionable websites, such as phishing pages, the owner can be charged with fraud or some other cybercrime.</p>
  485. <h2 id="how-to-detect-a-hidden-link-block-on-your-website">How to detect a hidden link block on your website</h2>
  486. <p>The simplest and most accessible method for any user to check a website for a hidden block is to view its source code in the browser. This is very easy to do. Navigate to the website, press Control+U, and the website&#8217;s code will open in the next tab. Search (Control+F) the code for the following keywords:
  487. <span id="urvanov-syntax-highlighter-68f7ac2ed3a6c852685536" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-v">display</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-v">none</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">visibility</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-v">hidden</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">opacity</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">0</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">height</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">0</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">width</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">0</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">position</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-v">absolute</span></span></span>. In addition, you can check for keywords that are characteristic of the hidden content itself. When it comes to links that point to adult or gambling sites, you should look for
  488. <span id="urvanov-syntax-highlighter-68f7ac2ed3a72231804835" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-v">porn</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">sex</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">casino</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">card</span></span></span>, and the like.</p>
  489. <p>A slightly more complex method is using web developer tools to investigate the DOM for invisible blocks. After the page fully loads, open DevTools (F12) in the browser and go to the Elements tab. Search (Control+F) for keywords such as
  490. <span id="urvanov-syntax-highlighter-68f7ac2ed3a74159582674" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-o">&lt;</span><span class="crayon-v">a</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">iframe</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">display</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-v">none</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">hidden</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">opacity</span></span></span>. Hover your cursor over suspicious elements in the code so the browser highlights their location on the page. If the block occupies zero area or is located outside the visible area, that is an indicator of a hidden element. Check the Computed tab for the selected element; there, you can see the applied CSS styles and confirm that it is hidden from the user&#8217;s view.</p>
  491. <p>You can also utilize specialized SEO tools. These are typically third-party solutions that scan website SEO data and generate reports. They can provide a report about suspicious links as well. Few of them are free, but when selecting a tool, you should be guided primarily by the vendor&#8217;s reputation rather than price. It is better to use tried-and-true, well-known services that are known to be free of malicious or questionable payloads. Examples of these trusted services include Google Search Console, Bing Webmaster Tools, OpenLinkProfiler, and SEO Minion.</p>
  492. <p>Another way to discover hidden SEO spam on a website is to check the CMS itself and its files. First, you should scan the database tables for suspicious HTML tags with third-party links that may have been inserted by attackers, and also carefully examine the website&#8217;s template files (header.php, footer.php, and index.php) and included modules for unfamiliar or suspicious code. Pay particular attention to encrypted insertions, unclear scripts, or links that should not originally be present in the website&#8217;s structure.</p>
  493. <p>Additionally, you can look up your website&#8217;s reputation on the <a href="https://opentip.kaspersky.com/" target="_blank" rel="noopener">Kaspersky Threat Intelligence Portal</a>. If you find it in an uncharacteristic category – typically &#8220;Adult content&#8221;, &#8220;Sexually explicit&#8221;, or &#8220;Gambling&#8221; – there is a high probability that there is a hidden SEO spam block embedded in your website.</p>
  494. <h2 id="how-to-protect-your-website">How to protect your website</h2>
  495. <p>To prevent hidden links from appearing on your website, avoid unlicensed templates, themes, and other pre-packaged solutions. The entire site infrastructure must be built only on licensed and official solutions. The same principle applies to webmasters and companies you hire to build your website: we recommend checking their work for hidden links, but also for vulnerabilities in general. Never cut corners when it comes to security.</p>
  496. <p>Keep your CMS, themes, and plugins up to date, as new versions often patch known vulnerabilities that attackers can exploit. Delete any unused plugins and themes, if any. The less unnecessary components are installed, the lower the risk of an exploit in one of the extensions, plugins, and themes. It is worth noting that this risk never disappears completely – it is still there even if you have a minimal set of components as long as they are outdated or poorly secured.</p>
  497. <p>To protect files and the server, it is important to properly configure access permissions. On servers running Linux and other Unix-like systems, use <strong>644</strong> for files and <strong>755</strong> for folders. This means that the owner can open folders, and read and modify folders and files, while the group and other users can only read files and open folders. If write access is not necessary, for example in template folders, forbid it altogether to lower the risk of malicious actors making unauthorized changes. Furthermore, you must set up regular, automatic website backups so that data can be quickly restored if there is an issue.</p>
  498. <p>Additionally, it is worth using web application firewalls (WAFs), which help block malicious requests and protect the site from external attacks. This solution is available in <a href="https://www.kaspersky.com/small-to-medium-business-security/ddos-protection?icid=gl_securelist_acq_ona_smm__onl_b2b_securelist_lnk_sm-team___kddosp____debce7fd29f69a6d" target="_blank" rel="noopener">Kaspersky DDoS Protection</a>.</p>
  499. <p>To protect the administrator panel, use only strong passwords and 2FA (Two-Factor Authentication) at all times. You would be well-advised to restrict access to the admin panel by IP address if you can. Only a limited group of individuals should be granted admin privileges.</p>
  500. ]]></content:encoded>
  501. <wfw:commentRss>https://securelist.com/seo-spam-hidden-links/117782/feed/</wfw:commentRss>
  502. <slash:comments>0</slash:comments>
  503. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16210132/SL-seo-spam-featured.jpg" width="2000" height="1000"><media:keywords>full</media:keywords></media:content>
  504. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16210132/SL-seo-spam-featured-1024x512.jpg" width="1024" height="512"><media:keywords>large</media:keywords></media:content>
  505. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16210132/SL-seo-spam-featured-300x150.jpg" width="300" height="150"><media:keywords>medium</media:keywords></media:content>
  506. <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/16210132/SL-seo-spam-featured-150x150.jpg" width="150" height="150"><media:keywords>thumbnail</media:keywords></media:content>
  507. </item>
  508. <item>
  509. <title>Maverick: a new banking Trojan abusing WhatsApp in a mass-scale distribution</title>
  510. <link>https://securelist.com/maverick-banker-distributing-via-whatsapp/117715/</link>
  511. <comments>https://securelist.com/maverick-banker-distributing-via-whatsapp/117715/#respond</comments>
  512. <dc:creator><![CDATA[GReAT]]></dc:creator>
  513. <pubDate>Wed, 15 Oct 2025 13:00:43 +0000</pubDate>
  514. <category><![CDATA[Malware descriptions]]></category>
  515. <category><![CDATA[Malware Technologies]]></category>
  516. <category><![CDATA[Microsoft Internet Explorer]]></category>
  517. <category><![CDATA[Firefox]]></category>
  518. <category><![CDATA[Google Chrome]]></category>
  519. <category><![CDATA[Malware Descriptions]]></category>
  520. <category><![CDATA[Malware]]></category>
  521. <category><![CDATA[Trojan Banker]]></category>
  522. <category><![CDATA[Trojan]]></category>
  523. <category><![CDATA[Brazil]]></category>
  524. <category><![CDATA[Microsoft Edge]]></category>
  525. <category><![CDATA[Coyote]]></category>
  526. <category><![CDATA[Maverick]]></category>
  527. <category><![CDATA[Financial threats]]></category>
  528. <category><![CDATA[Windows malware]]></category>
  529. <guid isPermaLink="false">https://kasperskycontenthub.com/securelist/?p=117715</guid>
  530.  
  531. <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>
  532. <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 />
  533. 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>
  534. <h2 id="key-findings">Key findings:</h2>
  535. <ul>
  536. <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>
  537. <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>
  538. <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>
  539. <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>
  540. <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>
  541. <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>
  542. <li>All infections are modular and performed in memory, with minimal disk activity, using PowerShell, .NET, and shellcode encrypted using Donut.</li>
  543. <li>The new Trojan uses AI in the code-writing process, especially in certificate decryption and general code development.</li>
  544. <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>
  545. </ul>
  546. <h2 id="initial-infection-vector">Initial infection vector</h2>
  547. <p>The infection chain works according to the diagram below:</p>
  548. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061851/maverick-banker-01.png" class="magnificImage"><img loading="lazy" 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="auto, (max-width: 2093px) 100vw, 2093px" /></a></p>
  549. <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>
  550. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/15061954/maverick-banker-02-upd.jpg" class="magnificImage"><img loading="lazy" 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="auto, (max-width: 1009px) 100vw, 1009px" /></a></p>
  551. <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>
  552. <p>The LNK is encoded to execute cmd.exe with the following arguments:</p>
  553. <p><a href="https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13212230/maverick-banker-distributing5.png" class="magnificImage"><img loading="lazy" 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="auto, (max-width: 2048px) 100vw, 2048px" /></a></p>
  554. <p>The decoded commands point to the execution of a PowerShell script:</p>
  555. <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>
  556. <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>
  557. <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>
  558. <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 />
  559. <a name="loader"></a></p>
  560. <h3 id="initial-net-loader">Initial .NET loader</h3>
  561. <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>
  562. <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>
  563. <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>
  564. <ul>
  565. <li>hxxps://sorvetenopote.com/api/v1/3d045ada0df942c983635e</li>
  566. </ul>
  567. <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>
  568. <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>
  569. <ul>
  570. <li>&#8220;Base64(HMAC256(Key))&#8221;</li>
  571. </ul>
  572. <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>
  573. <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>
  574. <ul>
  575. <li>Extract the last 4 bytes (int32) from the binary file; this indicates the size of the encryption key.</li>
  576. <li>Walk backwards until you reach the beginning of the encryption key (file size &#8211; 4 &#8211; key_size).</li>
  577. <li>Get the XOR key.</li>
  578. <li>Apply the XOR to the entire file using the obtained key.</li>
  579. </ul>
  580. <h2 id="whatsapp-infector-downloader">WhatsApp infector downloader</h2>
  581. <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>
  582. <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>
  583. <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>
  584. <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>
  585. <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>
  586. <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>
  587. <h2 id="maverick-the-banking-trojan">Maverick, the banking Trojan</h2>
  588. <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>
  589. <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>
  590. <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>
  591. <ul>
  592. <li>&#8220;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\&#8221; + &#8220;HealthApp-&#8221; + GUID + &#8220;.bat&#8221;.</li>
  593. </ul>
  594. <p>Next, it will generate the bat command using the hardcoded URL, which in this case is:</p>
  595. <ul>
  596. <li>&#8220;hxxps://sorvetenopote.com&#8221; + &#8220;/api/itbi/startup/&#8221; + NEW_GUID.</li>
  597. </ul>
  598. <p>In the command generation function, it is possible to see the creation of an entirely new obfuscated PowerShell script.</p>
  599. <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>
  600. <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>
  601. <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>
  602. <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>
  603. <p>* Chrome<br />
  604. * Firefox<br />
  605. * MS Edge<br />
  606. * Brave<br />
  607. * Internet Explorer<br />
  608. * Specific bank web browser</p>
  609. <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>
  610. <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>
  611. <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>
  612. <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>
  613. <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>
  614. <h3 id="maverick-agent">Maverick Agent</h3>
  615. <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>
  616. <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>
  617. <p>What each of them does is:</p>
  618. <ul>
  619. <li><strong>IsValidBrazilianTimezone()</strong><br />
  620. 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>
  621. <li><strong>IsBrazilianLocale()</strong><br />
  622. 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>
  623. <li><strong>IsBrazilianRegion()</strong><br />
  624. 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>
  625. <li><strong>IsBrazilianDateFormat()</strong><br />
  626. 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>
  627. </ul>
  628. <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>
  629. <h2 id="c2-communication">C2 communication</h2>
  630. <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>
  631. <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>
  632. <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>
  633. <table>
  634. <tbody>
  635. <tr>
  636. <td><strong>Command</strong></td>
  637. <td><strong>Description</strong></td>
  638. </tr>
  639. <tr>
  640. <td>INFOCLIENT</td>
  641. <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>
  642. </tr>
  643. <tr>
  644. <td>RECONNECT</td>
  645. <td>Disconnect, sleep for a few seconds, and reconnect again to the C2.</td>
  646. </tr>
  647. <tr>
  648. <td>REBOOT</td>
  649. <td>Reboot the machine</td>
  650. </tr>
  651. <tr>
  652. <td>KILLAPPLICATION</td>
  653. <td>Exit the malware process</td>
  654. </tr>
  655. <tr>
  656. <td>SCREENSHOT</td>
  657. <td>Take a screenshot and send it to C2, compressed with gzip</td>
  658. </tr>
  659. <tr>
  660. <td>KEYLOGGER</td>
  661. <td>Enable the keylogger, capture all locally, and send only when the server specifically requests the logs</td>
  662. </tr>
  663. <tr>
  664. <td>MOUSECLICK</td>
  665. <td>Do a mouse click, used for the remote connection</td>
  666. </tr>
  667. <tr>
  668. <td>KEYBOARDONECHAR</td>
  669. <td>Press one char, used for the remote connection</td>
  670. </tr>
  671. <tr>
  672. <td>KEYBOARDMULTIPLESCHARS</td>
  673. <td>Send multiple characters used for the remote connection</td>
  674. </tr>
  675. <tr>
  676. <td>TOOGLEDESKTOP</td>
  677. <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>
  678. </tr>
  679. <tr>
  680. <td>TOOGLEINTERN</td>
  681. <td>Get a screenshot of a specific window</td>
  682. </tr>
  683. <tr>
  684. <td>GENERATEWINDOWLOCKED</td>
  685. <td>Lock the screen using one of the banks&#8217; home pages.</td>
  686. </tr>
  687. <tr>
  688. <td>LISTALLHANDLESOPENEDS</td>
  689. <td>Send all open handles to the server</td>
  690. </tr>
  691. <tr>
  692. <td>KILLPROCESS</td>
  693. <td>Kill some process by using its handle</td>
  694. </tr>
  695. <tr>
  696. <td>CLOSEHANDLE</td>
  697. <td>Close a handle</td>
  698. </tr>
  699. <tr>
  700. <td>MINIMIZEHANDLE</td>
  701. <td>Minimize a window using its handle</td>
  702. </tr>
  703. <tr>
  704. <td>MAXIMIZEHANDLE</td>
  705. <td>Maximize a window using its handle</td>
  706. </tr>
  707. <tr>
  708. <td>GENERATEWINDOWREQUEST</td>
  709. <td>Generate a phishing window asking for the victim&#8217;s credentials used by banks</td>
  710. </tr>
  711. <tr>
  712. <td>CANCELSCREENREQUEST</td>
  713. <td>Disable the phishing window</td>
  714. </tr>
  715. </tbody>
  716. </table>
  717. <p><strong>Agent profile info</strong></p>
  718. <p>In the &#8220;INFOCLIENT&#8221; command, the information sent to the C2 is as follows:</p>
  719. <ul>
  720. <li><strong>Agent ID:</strong> A SHA256 hash of all primary MAC addresses used by all interfaces</li>
  721. <li>Username</li>
  722. <li>Hostname</li>
  723. <li>Operating system version</li>
  724. <li>Client version (no value)</li>
  725. <li>Number of monitors</li>
  726. <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>
  727. <li>Screen resolution</li>
  728. </ul>
  729. <h2 id="conclusion">Conclusion</h2>
  730. <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 />
  731. 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 />
  732. 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 />
  733. 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 />
  734. 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>
  735. <h2 id="iocs">IoCs</h2>
  736. <table>
  737. <tbody>
  738. <tr>
  739. <td>Dominio</td>
  740. <td>IP</td>
  741. <td>ASN</td>
  742. </tr>
  743. <tr>
  744. <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>
  745. <td>181.41.201.184</td>
  746. <td>212238</td>
  747. </tr>
  748. <tr>
  749. <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>
  750. <td>77.111.101.169</td>
  751. <td>396356</td>
  752. </tr>
  753. </tbody>
  754. </table>
  755. ]]></content:encoded>
  756. <wfw:commentRss>https://securelist.com/maverick-banker-distributing-via-whatsapp/117715/feed/</wfw:commentRss>
  757. <slash:comments>0</slash:comments>
  758. <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>
  759. <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>
  760. <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>
  761. <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>
  762. </item>
  763. <item>
  764. <title>Mysterious Elephant: a growing threat</title>
  765. <link>https://securelist.com/mysterious-elephant-apt-ttps-and-tools/117596/</link>
  766. <comments>https://securelist.com/mysterious-elephant-apt-ttps-and-tools/117596/#respond</comments>
  767. <dc:creator><![CDATA[Noushin Shabab, Ye Jin]]></dc:creator>
  768. <pubDate>Wed, 15 Oct 2025 10:00:11 +0000</pubDate>
  769. <category><![CDATA[APT reports]]></category>
  770. <category><![CDATA[GReAT research]]></category>
  771. <category><![CDATA[Malware Technologies]]></category>
  772. <category><![CDATA[Targeted attacks]]></category>
  773. <category><![CDATA[Google Chrome]]></category>
  774. <category><![CDATA[Malware Descriptions]]></category>
  775. <category><![CDATA[Spear phishing]]></category>
  776. <category><![CDATA[Malware]]></category>
  777. <category><![CDATA[APT]]></category>
  778. <category><![CDATA[RAT Trojan]]></category>
  779. <category><![CDATA[Backdoor]]></category>
  780. <category><![CDATA[WhatsApp]]></category>
  781. <category><![CDATA[Data theft]]></category>
  782. <category><![CDATA[Defense evasion]]></category>
  783. <category><![CDATA[TTPs]]></category>
  784. <category><![CDATA[APAC]]></category>
  785. <category><![CDATA[RC4]]></category>
  786. <category><![CDATA[APT (Targeted attacks)]]></category>
  787. <category><![CDATA[Windows malware]]></category>
  788. <guid isPermaLink="false">https://kasperskycontenthub.com/securelist/?p=117596</guid>
  789.  
  790. <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>
  791. <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>
  792. <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>
  793. <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>
  794. <h2 id="the-emergence-of-mysterious-elephant">The emergence of Mysterious Elephant</h2>
  795. <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>
  796. <h2 id="latest-campaign">Latest campaign</h2>
  797. <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>
  798. <h3 id="spear-phishing">Spear phishing</h3>
  799. <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>
  800. <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>
  801. <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>
  802. <h3 id="malicious-tools">Malicious tools</h3>
  803. <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>
  804. <h4 id="powershell-scripts">PowerShell scripts</h4>
  805. <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>
  806. <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>
  807. <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>
  808. <h4 id="babshell">BabShell</h4>
  809. <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>
  810. <ol>
  811. <li>It listens for and receives commands from the attacker-controlled C2 server.</li>
  812. <li>For each received command, BabShell creates a separate thread to execute it, allowing for concurrent execution of multiple commands.</li>
  813. <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>
  814. <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>
  815. </ol>
  816. <p>BabShell uses the following commands to execute command-line instructions and additional payloads it receives from the server:</p>
  817. <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>
  818. <h4 id="customized-open-source-tools">Customized open-source tools</h4>
  819. <p>One of the latest modules used by Mysterious Elephant and loaded by BabShell is MemLoader HidenDesk.</p>
  820. <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>
  821. <p>MemLoader HidenDesk operates in the following manner:</p>
  822. <ol>
  823. <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>
  824. <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>
  825. <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>
  826. <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>
  827. </ol>
  828. <p>Another recent loader malware used in the latest campaign is MemLoader Edge.</p>
  829. <p>MemLoader Edge is a malicious loader that embeds a sample of the VRat backdoor, utilizing encryption and evasion techniques.</p>
  830. <p>It operates in the following manner:</p>
  831. <ol>
  832. <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>
  833. <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>
  834. <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>
  835. <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 />
  836. <pre class="urvanov-syntax-highlighter-plain-tag">C:\Users\admin\source\repos\vRat_Client\Release\vRat_Client.pdb</pre>
  837. </li>
  838. </ol>
  839. <h4 id="whatsapp-specific-exfiltration-tools">WhatsApp-specific exfiltration tools</h4>
  840. <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>
  841. <ul>
  842. <li><strong>Uplo Exfiltrator</strong></li>
  843. </ul>
  844. <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>
  845. <ul>
  846. <li><strong>Stom Exfiltrator</strong></li>
  847. </ul>
  848. <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>
  849. <p>The targeted file extensions include .PDF, .DOCX, .TXT, .JPG, .PNG, .ZIP, .RAR, .PPTX, .DOC, .XLS, .XLSX, .PST, and .OST.</p>
  850. <ul>
  851. <li><strong>ChromeStealer Exfiltrator</strong></li>
  852. </ul>
  853. <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>
  854. <h2 id="infrastructure">Infrastructure</h2>
  855. <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>
  856. <div class="js-infogram-embed" data-id="_/PYFxzOySORx2YCuG6lUv" data-type="interactive" data-title="01-EN-RU-Mysterious Elephant charts" style="min-height:;"></div>
  857. <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>
  858. <h2 id="victimology">Victimology</h2>
  859. <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>
  860. <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>
  861. <ul>
  862. <li>Most targeted countries: Pakistan, Bangladesh, Afghanistan, Nepal and Sri Lanka</li>
  863. </ul>
  864. <div class="js-infogram-embed" data-id="_/R4Utu2bH5IoYCk7MIBoH" data-type="interactive" data-title="01 EN Mysterious Elephant charts 2" style="min-height:;"></div>
  865. <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>
  866. <ul>
  867. <li>Primary targets: government entities and foreign affairs sectors</li>
  868. </ul>
  869. <div class="js-infogram-embed" data-id="_/NNQDAbzeYeYkE3UXVrZ5" data-type="interactive" data-title="03 EN Mysterious Elephant charts" style="min-height:;"></div>
  870. <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>
  871. <h2 id="conclusion">Conclusion</h2>
  872. <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>
  873. <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>
  874. <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>
  875. <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>
  876. <h2 id="indicators-of-compromise">Indicators of compromise</h2>
  877. <h3 id="file-hashes">File hashes</h3>
  878. <p><strong>Malicious documents</strong><br />
  879. <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 />
  880. <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>
  881. <p><strong>MemLoader HidenDesk</strong><br />
  882. <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 />
  883. <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>
  884. <p><strong>MemLoader Edge</strong><br />
  885. <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 />
  886. <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>
  887. <p><strong>BabShell</strong><br />
  888. <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 />
  889. <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>
  890. <p><strong>Uplo Exfiltrator</strong><br />
  891. <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>
  892. <p><strong>Stom Exfiltrator</strong><br />
  893. <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 />
  894. <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 />
  895. <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 />
  896. <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 />
  897. <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>
  898. <p><strong>ChromeStealer Exfiltrator</strong><br />
  899. <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>
  900. <h3 id="domains-ips">Domains/IPs</h3>
  901. <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 />
  902. <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 />
  903. <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 />
  904. <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 />
  905. <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 />
  906. <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 />
  907. <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 />
  908. <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 />
  909. <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 />
  910. <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 />
  911. <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 />
  912. <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 />
  913. <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>
  914. ]]></content:encoded>
  915. <wfw:commentRss>https://securelist.com/mysterious-elephant-apt-ttps-and-tools/117596/feed/</wfw:commentRss>
  916. <slash:comments>0</slash:comments>
  917. <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>
  918. <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>
  919. <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>
  920. <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>
  921. </item>
  922. <item>
  923. <title>Signal in the noise: what hashtags reveal about hacktivism in 2025</title>
  924. <link>https://securelist.com/dfi-meta-hacktivist-report/117708/</link>
  925. <comments>https://securelist.com/dfi-meta-hacktivist-report/117708/#respond</comments>
  926. <dc:creator><![CDATA[Kaspersky Security Services]]></dc:creator>
  927. <pubDate>Tue, 14 Oct 2025 10:00:09 +0000</pubDate>
  928. <category><![CDATA[Research]]></category>
  929. <category><![CDATA[SOC, TI and IR posts]]></category>
  930. <category><![CDATA[Twitter]]></category>
  931. <category><![CDATA[Darknet]]></category>
  932. <category><![CDATA[Threat intelligence]]></category>
  933. <category><![CDATA[hacktivists]]></category>
  934. <category><![CDATA[Telegram]]></category>
  935. <category><![CDATA[Cybersecurity]]></category>
  936. <guid isPermaLink="false">https://kasperskycontenthub.com/securelist/?p=117708</guid>
  937.  
  938. <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>
  939. <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>
  940. <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>
  941. <h2 id="key-findings">Key findings</h2>
  942. <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>
  943. <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>
  944. <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>
  945. <h3 id="hashtags-as-the-connective-tissue-of-hacktivist-operations">Hashtags as the connective tissue of hacktivist operations</h3>
  946. <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>
  947. <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>
  948. <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>
  949. <p>The full version of the report details the following findings:</p>
  950. <ul>
  951. <li>How long it typically takes for an attack to be reported after an initial threat post</li>
  952. <li>How hashtags are used to coordinate attacks or claim credit</li>
  953. <li>Patterns across campaigns and regions</li>
  954. <li>The types of cyberattacks being promoted or celebrated</li>
  955. </ul>
  956. <h2 id="practical-takeaways-and-recommendations">Practical takeaways and recommendations</h2>
  957. <p>For defenders and corporate leaders, we recommend the following:</p>
  958. <ul>
  959. <li>Prioritize scalable DDoS mitigation and proactive security measures.</li>
  960. <li>Treat public threats as short-horizon indicators rather than long-range forecasts.</li>
  961. <li>Invest in continuous monitoring across Telegram and related ecosystems to discover alliance announcements, threat posts, and cross-posted &#8220;proof&#8221; rapidly.</li>
  962. </ul>
  963. <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>
  964. <p><strong>To download the full report, please fill in the form below.</strong></p>
  965. <p><script data-b24-form="inline/1808/7dlezh" data-skip-moving="true">
  966.              (function (w, d, u) {
  967.                var s = d.createElement("script");
  968.                s.async = true;
  969.                s.src = u + "?" + ((Date.now() / 180000) | 0);
  970.                var h = d.getElementsByTagName("script")[0];
  971.                h.parentNode.insertBefore(s, h);
  972.              })(window, document, "https://cdn.bitrix24.eu/b30707545/crm/form/loader_1808.js");
  973.            </script><br />
  974.            <script src="https://storage.yandexcloud.net/kasperskyform/validator.js"></script><br />
  975.            <script>
  976.              initBxFormValidator({
  977.                formId: "inline/1808/7dlezh",
  978.                emailFieldName: "CONTACT_EMAIL",
  979.                redirectUrl: "https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2025/10/13172551/Hacktivist_report-DFI-META.pdf",
  980.                naturalFieldNames: ["CONTACT_UF_CRM_NODES"],
  981.                lengthRestrictedFieldNames: {
  982.                  CONTACT_EMAIL: 250,
  983.                  CONTACT_POST: 128,
  984.                  CONTACT_NAME: 50,
  985.                  CONTACT_UF_CRM_COMPANY: 255,
  986.                  CONTACT_UF_CRM_COMPANY_TAX_ID: 50,
  987.                  CONTACT_UF_CRM_PRODUCT_INTEREST: 255,
  988.                  CONTACT_UF_CRM_FORM_QUESTION_2: 255,
  989.                  CONTACT_UF_CRM_FORM_QUESTION_3: 255,
  990.                  CONTACT_UF_CRM_FORM_QUESTION_5: 255,
  991.                },
  992.              });
  993.            </script></p>
  994. ]]></content:encoded>
  995. <wfw:commentRss>https://securelist.com/dfi-meta-hacktivist-report/117708/feed/</wfw:commentRss>
  996. <slash:comments>0</slash:comments>
  997. <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>
  998. <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>
  999. <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>
  1000. <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>
  1001. </item>
  1002. <item>
  1003. <title>The king is dead, long live the king! Windows 10 EOL and Windows 11 forensic artifacts</title>
  1004. <link>https://securelist.com/forensic-artifacts-in-windows-11/117680/</link>
  1005. <comments>https://securelist.com/forensic-artifacts-in-windows-11/117680/#respond</comments>
  1006. <dc:creator><![CDATA[Kirill Magaskin]]></dc:creator>
  1007. <pubDate>Tue, 14 Oct 2025 08:00:57 +0000</pubDate>
  1008. <category><![CDATA[Research]]></category>
  1009. <category><![CDATA[Microsoft Windows]]></category>
  1010. <category><![CDATA[Digital forensics]]></category>
  1011. <category><![CDATA[Forensic journey]]></category>
  1012. <category><![CDATA[Cybersecurity]]></category>
  1013. <guid isPermaLink="false">https://kasperskycontenthub.com/securelist/?p=117680</guid>
  1014.  
  1015. <description><![CDATA[With the end of Windows 10 support approaching, we discuss which forensic artifacts in Windows 11 may be of interest.]]></description>
  1016. <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>
  1017. <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>
  1018. <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>
  1019. <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>
  1020. <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>
  1021. <h2 id="what-is-new-in-windows-11">What is new in Windows 11</h2>
  1022. <h3 id="recall">Recall</h3>
  1023. <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>
  1024. <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>
  1025. <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>
  1026. <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>
  1027. <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>
  1028. <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>
  1029. <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>
  1030. <ul>
  1031. <li>The <code>App</code> table holds data about the process that launched the application&#8217;s graphical user interface window.</li>
  1032. <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>
  1033. <li>The <code>WindowCapture</code> table records the type of event (Name column):
  1034. <ul>
  1035. <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>
  1036. <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>
  1037. <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>
  1038. <li><strong>WindowDestroyedEvent</strong> signals the closing of the application window.</li>
  1039. <li><strong>ForegroundChangedEvent</strong> does not contain useful data from a forensics perspective.</li>
  1040. </ul>
  1041. <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).
  1042. </li>
  1043. </ul>
  1044. <ul>
  1045. <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>
  1046. </ul>
  1047. <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>
  1048. <h3 id="updated-standard-applications">Updated standard applications</h3>
  1049. <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>
  1050. <p>The main directory for Notepad artifacts in Windows 11 is located at <code>%LOCALAPPDATA%\Packages\Microsoft.WindowsNotepad_8wekyb3d8bbwe\LocalState\</code>.<br />
  1051. This directory contains two subdirectories:</p>
  1052. <ul>
  1053. <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>
  1054. <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>
  1055. </ul>
  1056. <p>The structure of {GUID}.bin for saved tabs is as follows:</p>
  1057. <table>
  1058. <tbody>
  1059. <tr>
  1060. <td><strong>Field</strong></td>
  1061. <td><strong>Type</strong></td>
  1062. <td><strong>Value and explanation</strong></td>
  1063. </tr>
  1064. <tr>
  1065. <td>signature</td>
  1066. <td>[u8;2]</td>
  1067. <td>NP</td>
  1068. </tr>
  1069. <tr>
  1070. <td>?</td>
  1071. <td>u8</td>
  1072. <td>00</td>
  1073. </tr>
  1074. <tr>
  1075. <td>file_saved_to_path</td>
  1076. <td>bool</td>
  1077. <td>00 = the file was not saved at the specified path<br />
  1078. 01 = the file was saved</td>
  1079. </tr>
  1080. <tr>
  1081. <td>path_length</td>
  1082. <td>uLEB128</td>
  1083. <td>Length of the full path (in characters) to the file where the tab content was written</td>
  1084. </tr>
  1085. <tr>
  1086. <td>file_path</td>
  1087. <td>UTF-16LE</td>
  1088. <td>The full path to the file where the tab content was written</td>
  1089. </tr>
  1090. <tr>
  1091. <td>file_size</td>
  1092. <td>uLEB128</td>
  1093. <td>The size of the file on disk where the tab content was written</td>
  1094. </tr>
  1095. <tr>
  1096. <td>encoding</td>
  1097. <td>u8</td>
  1098. <td>File encoding:<br />
  1099. 0x01 – ANSI<br />
  1100. 0x02 – UTF-16LE<br />
  1101. 0x03 – UTF-16BE<br />
  1102. 0x04 – UTF-8BOM<br />
  1103. 0x05 – UTF-8</td>
  1104. </tr>
  1105. <tr>
  1106. <td>cr_type</td>
  1107. <td>u8</td>
  1108. <td>Type of carriage return:<br />
  1109. 0x01 — CRLF<br />
  1110. 0x02 — CR<br />
  1111. 0x03 — LF</td>
  1112. </tr>
  1113. <tr>
  1114. <td>last_write_time</td>
  1115. <td>uLEB128</td>
  1116. <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>
  1117. </tr>
  1118. <tr>
  1119. <td>sha256_hash</td>
  1120. <td>[u8;32]</td>
  1121. <td>The SHA-256 hash of the tab content</td>
  1122. </tr>
  1123. <tr>
  1124. <td>?</td>
  1125. <td>[u8;2]</td>
  1126. <td>00 01</td>
  1127. </tr>
  1128. <tr>
  1129. <td>selection_start</td>
  1130. <td>uLEB128</td>
  1131. <td>The offset of the section start from the beginning of the file</td>
  1132. </tr>
  1133. <tr>
  1134. <td>selection_end</td>
  1135. <td>uLEB128</td>
  1136. <td>The offset of the section end from the beginning of the file</td>
  1137. </tr>
  1138. <tr>
  1139. <td>config_block</td>
  1140. <td>ConfigBlock</td>
  1141. <td>ConfigBlock structure configuration</td>
  1142. </tr>
  1143. <tr>
  1144. <td>content_length</td>
  1145. <td>uLEB128</td>
  1146. <td>The length of the text in the file</td>
  1147. </tr>
  1148. <tr>
  1149. <td>content</td>
  1150. <td>UTF-16LE</td>
  1151. <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>
  1152. </tr>
  1153. <tr>
  1154. <td>contain_unsaved_data</td>
  1155. <td>bool</td>
  1156. <td>00 = the tab content in the {GUID}.bin file matches the tab content in the file on disk<br />
  1157. 01 = changes to the tab have not been saved to disk</td>
  1158. </tr>
  1159. <tr>
  1160. <td>checksum</td>
  1161. <td>[u8;4]</td>
  1162. <td>The CRC32 checksum of the {GUID}.bin file content, offset by 0x03 from the start of the file</td>
  1163. </tr>
  1164. <tr>
  1165. <td>unsaved_chunks</td>
  1166. <td>[UnsavedChunk]</td>
  1167. <td>A list of UnsavedChunk structures. This is absent if the tab was saved to disk with no subsequent modifications</td>
  1168. </tr>
  1169. </tbody>
  1170. </table>
  1171. <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>
  1172. <p>For tabs that were never saved, the {GUID}.bin file structure in the TabState directory is shorter:</p>
  1173. <table>
  1174. <tbody>
  1175. <tr>
  1176. <td><strong>Field</strong></td>
  1177. <td><strong>Type</strong></td>
  1178. <td><strong>Value and explanation</strong></td>
  1179. </tr>
  1180. <tr>
  1181. <td>signature</td>
  1182. <td>[u8;2]</td>
  1183. <td>NP</td>
  1184. </tr>
  1185. <tr>
  1186. <td>?</td>
  1187. <td>u8</td>
  1188. <td>00</td>
  1189. </tr>
  1190. <tr>
  1191. <td>file_saved_to_path</td>
  1192. <td>bool</td>
  1193. <td>00 = the file was not saved at the specified path (always)</td>
  1194. </tr>
  1195. <tr>
  1196. <td>selection_start</td>
  1197. <td>uLEB128</td>
  1198. <td>The offset of the section start from the beginning of the file</td>
  1199. </tr>
  1200. <tr>
  1201. <td>selection_end</td>
  1202. <td>uLEB128</td>
  1203. <td>The offset of the section end from the beginning of the file</td>
  1204. </tr>
  1205. <tr>
  1206. <td>config_block</td>
  1207. <td>ConfigBlock</td>
  1208. <td>ConfigBlock structure configuration</td>
  1209. </tr>
  1210. <tr>
  1211. <td>content_length</td>
  1212. <td>uLEB128</td>
  1213. <td>The length of the text in the file</td>
  1214. </tr>
  1215. <tr>
  1216. <td>content</td>
  1217. <td>UTF-16LE</td>
  1218. <td>File content</td>
  1219. </tr>
  1220. <tr>
  1221. <td>contain_unsaved_data</td>
  1222. <td>bool</td>
  1223. <td>01 = changes to the tab have not been saved to disk (always)</td>
  1224. </tr>
  1225. <tr>
  1226. <td>checksum</td>
  1227. <td>[u8;4]</td>
  1228. <td>The CRC32 checksum of the {GUID}.bin file content, offset by 0x03 from the start of the file</td>
  1229. </tr>
  1230. <tr>
  1231. <td>unsaved_chunks</td>
  1232. <td>[UnsavedChunk]</td>
  1233. <td>List of UnsavedChunk structures</td>
  1234. </tr>
  1235. </tbody>
  1236. </table>
  1237. <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>
  1238. <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>
  1239. <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>
  1240. <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>
  1241. <h2 id="changes-to-familiar-artifacts-in-windows-11">Changes to familiar artifacts in Windows 11</h2>
  1242. <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>
  1243. <h3 id="changes-to-ntfs-attribute-behavior">Changes to NTFS attribute behavior</h3>
  1244. <p>The behavior of NTFS attributes was changed between Windows 10 and Windows 11 in two $MFT structures: $STANDARD_INFORMATION and $FILE_NAME.</p>
  1245. <p>The changes to the behavior of the $STANDARD_INFORMATION attributes are presented in the table below:</p>
  1246. <table>
  1247. <tbody>
  1248. <tr>
  1249. <td><strong>Event</strong></td>
  1250. <td>Access file</td>
  1251. <td>Rename file</td>
  1252. <td>Copy file to new folder</td>
  1253. <td>Move file within one volume</td>
  1254. <td>Move file between volumes</td>
  1255. </tr>
  1256. <tr>
  1257. <td><strong>Win 10<br />
  1258. 1903</strong></td>
  1259. <td>The File Access timestamp is updated. However, it remains unchanged if the system volume is larger than 128 GB</td>
  1260. <td>The File Access timestamp remains unchanged</td>
  1261. <td>The copy metadata is updated</td>
  1262. <td>The File Access timestamp remains unchanged</td>
  1263. <td>The metadata is inherited from the original file</td>
  1264. </tr>
  1265. <tr>
  1266. <td><strong>Win 11 24H2</strong></td>
  1267. <td>The File Access timestamp is updated</td>
  1268. <td>The File Access timestamp is updated to match the modification time</td>
  1269. <td>The copy metadata is inherited from the original file</td>
  1270. <td>The File Access timestamp is updated to match the moving time</td>
  1271. <td>The metadata is updated</td>
  1272. </tr>
  1273. </tbody>
  1274. </table>
  1275. <p>Behavior of the $FILENAME attributes was changed as follows:</p>
  1276. <table>
  1277. <tbody>
  1278. <tr>
  1279. <td><strong>Event</strong></td>
  1280. <td>Rename file</td>
  1281. <td>Move file via Explorer within one volume</td>
  1282. <td>Move file to Recycle Bin</td>
  1283. </tr>
  1284. <tr>
  1285. <td><strong>Win 10<br />
  1286. 1903</strong></td>
  1287. <td>The timestamps and metadata remain unchanged</td>
  1288. <td>The timestamps and metadata remain unchanged</td>
  1289. <td>The timestamps and metadata remain unchanged</td>
  1290. </tr>
  1291. <tr>
  1292. <td><strong>Win 11 24H2</strong></td>
  1293. <td>The File Access and File Modify timestamps along with the metadata are inherited from the previous version of $STANDARD_INFORMATION</td>
  1294. <td>The File Access and File Modify timestamps along with the metadata are inherited from the previous version of $STANDARD_INFORMATION</td>
  1295. <td>The File Access and File Modify timestamps along with the metadata are inherited from the previous version of $STANDARD_INFORMATION</td>
  1296. </tr>
  1297. </tbody>
  1298. </table>
  1299. <p>Analysts should consider these changes when examining the service files of the NTFS file system.</p>
  1300. <h3 id="program-compatibility-assistant">Program Compatibility Assistant</h3>
  1301. <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>
  1302. <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>
  1303. <ul>
  1304. <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>
  1305. </ul>
  1306. <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>
  1307. <ul>
  1308. <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:
  1309. <ul>
  1310. <li>Executable launch time (YYYY-MM-DD HH:MM:SS.f (UTC))</li>
  1311. <li>Record type (0–4):
  1312. <ul>
  1313. <li>0 = installation error</li>
  1314. <li>1 = driver blocked</li>
  1315. <li>2 = abnormal process exit</li>
  1316. <li>3 = PCA Resolve call (component responsible for fixing compatibility issues when running older programs)</li>
  1317. <li>4 = value not set</li>
  1318. </ul>
  1319. </li>
  1320. <li>Path to executable file. This path omits the volume letter and frequently uses environment variables (%USERPROFILE%, %systemroot%, %programfiles%, and others).</li>
  1321. <li>Product name (from the PE header, lowercase)</li>
  1322. <li>Company name (from the PE header, lowercase)</li>
  1323. <li>Product version (from the PE header)</li>
  1324. <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>
  1325. <li>Message</li>
  1326. </ul>
  1327. </li>
  1328. </ul>
  1329. <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>
  1330. <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>
  1331. <h3 id="windows-search">Windows Search</h3>
  1332. <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>
  1333. <p>From Windows Vista up to and including Windows 10, the file index was stored in an Extensible Storage Engine (ESE) database:<br />
  1334. <code>%PROGRAMDATA%\Microsoft\Search\Data\Applications\Windows\Windows.edb</code>.</p>
  1335. <p>Windows 11 breaks this storage down into three SQLite databases:</p>
  1336. <ul>
  1337. <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>
  1338. <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>
  1339. <li><code>%PROGRAMDATA%\Microsoft\Search\Data\Applications\Windows\Windows-usn.db</code> does not contain useful information for forensic analysis.</li>
  1340. </ul>
  1341. <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 />
  1342. <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 />
  1343. 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 />
  1344. <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>
  1345. <h3 id="other-minor-changes-in-windows-11">Other minor changes in Windows 11</h3>
  1346. <p>It is also worth mentioning a few small but important changes in Windows 11 that do not require a detailed analysis:</p>
  1347. <ul>
  1348. <li>A complete discontinuation of NTLMv1 means that pass-the-hash attacks are gradually becoming a thing of the past.</li>
  1349. <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>
  1350. <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>
  1351. <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>
  1352. <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:
  1353. <ul>
  1354. <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>
  1355. <li>It does not generate short file names, as NTFS does for DOS compatibility.</li>
  1356. <li>It does not support hard links or extended object attributes.</li>
  1357. <li>It offers increased maximum volume and single-file sizes (35 PB compared to 256 TB in NTFS).</li>
  1358. </ul>
  1359. </li>
  1360. </ul>
  1361. <h2 id="conclusion">Conclusion</h2>
  1362. <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>
  1363. ]]></content:encoded>
  1364. <wfw:commentRss>https://securelist.com/forensic-artifacts-in-windows-11/117680/feed/</wfw:commentRss>
  1365. <slash:comments>0</slash:comments>
  1366. <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>
  1367. <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>
  1368. <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>
  1369. <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>
  1370. </item>
  1371. <item>
  1372. <title>How we trained an ML model to detect DLL hijacking</title>
  1373. <link>https://securelist.com/building-ml-model-to-detect-dll-hijacking/117565/</link>
  1374. <comments>https://securelist.com/building-ml-model-to-detect-dll-hijacking/117565/#respond</comments>
  1375. <dc:creator><![CDATA[Anna Pidzhakova]]></dc:creator>
  1376. <pubDate>Mon, 06 Oct 2025 08:00:21 +0000</pubDate>
  1377. <category><![CDATA[Research]]></category>
  1378. <category><![CDATA[Security technology]]></category>
  1379. <category><![CDATA[Machine learning]]></category>
  1380. <category><![CDATA[DLL hijacking]]></category>
  1381. <category><![CDATA[Threat hunting]]></category>
  1382. <category><![CDATA[Artificial intelligence]]></category>
  1383. <category><![CDATA[DLL]]></category>
  1384. <category><![CDATA[Cybersecurity]]></category>
  1385. <guid isPermaLink="false">https://kasperskycontenthub.com/securelist/?p=117565</guid>
  1386.  
  1387. <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>
  1388. <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>
  1389. <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>
  1390. <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>
  1391. <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>
  1392. <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>
  1393. <h2 id="detecting-dll-hijacking-with-a-machine-learning-model">Detecting DLL hijacking with a machine-learning model</h2>
  1394. <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>
  1395. <h3 id="preparation">Preparation</h3>
  1396. <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>
  1397. <ul>
  1398. <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>
  1399. <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>
  1400. <li><strong>Renamed executable.</strong> To avoid detection, attackers frequently save legitimate applications under arbitrary names.</li>
  1401. <li><strong>Library size has changed, and it is no longer signed.</strong></li>
  1402. <li><strong>Modified library structure.</strong></li>
  1403. </ul>
  1404. <h3 id="training-sample-and-labeling">Training sample and labeling</h3>
  1405. <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>
  1406. <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>
  1407. <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>
  1408. <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>
  1409. <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>
  1410. <table>
  1411. <tbody>
  1412. <tr>
  1413. <td><strong>Status</strong></td>
  1414. <td><strong>Total</strong></td>
  1415. <td><strong>Unique files</strong></td>
  1416. </tr>
  1417. <tr>
  1418. <td>Unknown</td>
  1419. <td>~ 18M</td>
  1420. <td>~ 6M</td>
  1421. </tr>
  1422. <tr>
  1423. <td>Malicious</td>
  1424. <td>~ 50K</td>
  1425. <td>~ 1,000</td>
  1426. </tr>
  1427. <tr>
  1428. <td>Clean</td>
  1429. <td>~ 20M</td>
  1430. <td>~ 250K</td>
  1431. </tr>
  1432. </tbody>
  1433. </table>
  1434. <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>
  1435. <h2 id="loading-dlls-what-does-normal-look-like">Loading DLLs: what does normal look like?</h2>
  1436. <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>
  1437. <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>
  1438. <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>
  1439. <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>
  1440. <h2 id="loading-dlls-how-to-describe-hijacking">Loading DLLs: how to describe hijacking</h2>
  1441. <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>
  1442. <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>
  1443. <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>
  1444. <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>
  1445. <h2 id="model-evolution">Model evolution</h2>
  1446. <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>
  1447. <p>The model&#8217;s workflow was as simple as possible:</p>
  1448. <ol>
  1449. <li>We took a data stream and extracted a frequency description for selected sets of keys.</li>
  1450. <li>We took the same data stream from a different time period and obtained a set of features.</li>
  1451. <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>
  1452. <li>We trained the model on the resulting data.</li>
  1453. </ol>
  1454. <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>
  1455. <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>
  1456. <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>
  1457. <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>
  1458. <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>
  1459. <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>
  1460. <h2 id="comparison-of-the-models">Comparison of the models</h2>
  1461. <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>
  1462. <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>
  1463. <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>
  1464. <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>
  1465. <div class="js-infogram-embed" data-id="_/OWgUgOWv4ByEQ85H3Kvx" data-type="interactive" data-title="03-EN-DLL Hijacking charts" style="min-height:;"></div>
  1466. <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>
  1467. <h2 id="practical-application-of-the-models">Practical application of the models</h2>
  1468. <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>
  1469. <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>
  1470. <div class="js-infogram-embed" data-id="_/x8oClVXPCh0H7k2VhVBA" data-type="interactive" data-title="04-EN-DLL Hijacking charts" style="min-height:;"></div>
  1471. <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>
  1472. <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>
  1473. <h2 id="conclusion">Conclusion</h2>
  1474. <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>
  1475. ]]></content:encoded>
  1476. <wfw:commentRss>https://securelist.com/building-ml-model-to-detect-dll-hijacking/117565/feed/</wfw:commentRss>
  1477. <slash:comments>0</slash:comments>
  1478. <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>
  1479. <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>
  1480. <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>
  1481. <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>
  1482. </item>
  1483. <item>
  1484. <title>Detecting DLL hijacking with machine learning: real-world cases</title>
  1485. <link>https://securelist.com/detecting-dll-hijacking-with-machine-learning-in-kaspersky-siem/117567/</link>
  1486. <comments>https://securelist.com/detecting-dll-hijacking-with-machine-learning-in-kaspersky-siem/117567/#respond</comments>
  1487. <dc:creator><![CDATA[Gleb Ivanov, Andrey Gunkin]]></dc:creator>
  1488. <pubDate>Mon, 06 Oct 2025 08:00:08 +0000</pubDate>
  1489. <category><![CDATA[Security technologies]]></category>
  1490. <category><![CDATA[Security technology]]></category>
  1491. <category><![CDATA[Machine learning]]></category>
  1492. <category><![CDATA[DLL hijacking]]></category>
  1493. <category><![CDATA[Threat hunting]]></category>
  1494. <category><![CDATA[DLL sideloading]]></category>
  1495. <category><![CDATA[Cybersecurity]]></category>
  1496. <category><![CDATA[Artificial intelligence]]></category>
  1497. <category><![CDATA[DLL]]></category>
  1498. <category><![CDATA[SIEM]]></category>
  1499. <category><![CDATA[Cybersecurity]]></category>
  1500. <guid isPermaLink="false">https://kasperskycontenthub.com/securelist/?p=117567</guid>
  1501.  
  1502. <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>
  1503. <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>
  1504. <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>
  1505. <h2 id="how-the-model-works-in-kaspersky-siem">How the model works in Kaspersky SIEM</h2>
  1506. <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>
  1507. <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>
  1508. <p>This is how it looks:</p>
  1509. <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>
  1510. <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>
  1511. <ul>
  1512. <li>The path to the process file is known.</li>
  1513. <li>The path to the library is known.</li>
  1514. <li>The hashes of the file and the library are available.</li>
  1515. </ul>
  1516. <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>
  1517. <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>
  1518. <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>
  1519. <ul>
  1520. <li>0: data is being processed.</li>
  1521. <li>1: maliciousness not confirmed. This means the model currently does not consider the library malicious.</li>
  1522. <li>2: suspicious library.</li>
  1523. <li>3: maliciousness confirmed.</li>
  1524. </ul>
  1525. <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>
  1526. 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>
  1527. <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>
  1528. <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>
  1529. <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>
  1530. <p>Let us take a closer look at the three most interesting of these.</p>
  1531. <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>
  1532. <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>
  1533. 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
  1534. C:\ProgramData\SystemSettings.dll</pre><p>
  1535. 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>
  1536. <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>
  1537. The task is set to run daily.</p>
  1538. <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>
  1539. <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>
  1540. <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
  1541. DNS query type: AAAA
  1542. DNS response: ::ffff:8.219.1[.]155;
  1543. 8.219.1[.]155:8443</pre><p>
  1544. 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
  1545. whoami /priv
  1546. hostname
  1547. reg query HKLM\SOFTWARE\Microsoft\Cryptography /v MachineGuid
  1548. powershell -c $psversiontable
  1549. dotnet --version
  1550. systeminfo
  1551. reg query "HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware Drivers"
  1552. cmdkey /list
  1553. REG query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
  1554. reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers
  1555. netsh wlan show profiles
  1556. netsh wlan show interfaces
  1557. set
  1558. net localgroup administrators
  1559. net user
  1560. net user administrator
  1561. ipconfig /all
  1562. net config workstation
  1563. net view
  1564. arp -a
  1565. route print
  1566. netstat -ano
  1567. tasklist
  1568. schtasks /query /fo LIST /v
  1569. net start
  1570. net share
  1571. net use
  1572. netsh firewall show config
  1573. netsh firewall show state
  1574. net view /domain
  1575. net time /domain
  1576. net group "domain admins" /domain
  1577. net localgroup administrators /domain
  1578. net group "domain controllers" /domain
  1579. net accounts /domain
  1580. nltest / domain_trusts
  1581. reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
  1582. reg query HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
  1583. reg query HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
  1584. reg query HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
  1585. reg query HKEY_CURRENT_USER\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce</pre><p>
  1586. 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>
  1587. <h3 id="incident-2-infostealer-masquerading-as-a-policy-manager">Incident 2. Infostealer masquerading as a policy manager</h3>
  1588. <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
  1589. C:\Program Files\Chiniks\policymanager.dll E83F331BD1EC115524EBFF7043795BBE</pre><p>
  1590. 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>
  1591. <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>
  1592. <p>Analysis of the library file loaded by this process showed that it was malware designed to steal information from browsers.</p>
  1593. <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>
  1594. <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>
  1595. 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>
  1596. <h3 id="incident-3-malicious-loader-posing-as-a-security-solution">Incident 3. Malicious loader posing as a security solution</h3>
  1597. <p>Another incident discovered by our model occurred when a user connected a removable USB drive:</p>
  1598. <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>
  1599. <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>
  1600. CEFHelper.exe is a legitimate Avast Antivirus executable that, through DLL sideloading, loaded the wsc.dll library, which is a malicious loader.</p>
  1601. <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>
  1602. <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>
  1603. <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>
  1604. <h2 id="conclusion">Conclusion</h2>
  1605. <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>
  1606. <h2 id="ioc">IoC</h2>
  1607. <p><strong>Legitimate files used for DLL hijacking<br />
  1608. </strong>E0E092D4EFC15F25FD9C0923C52C33D6 loads SystemSettings.dll<br />
  1609. 09CD396C8F4B4989A83ED7A1F33F5503 loads policymanager.dll<br />
  1610. A72036F635CECF0DCB1E9C6F49A8FA5B loads wsc.dll</p>
  1611. <p><strong>Malicious files</strong><br />
  1612. <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 />
  1613. <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 />
  1614. <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>
  1615. <p><strong>Paths</strong><br />
  1616. C:\ProgramData\SystemSettings.exe<br />
  1617. C:\ProgramData\SystemSettings.dll<br />
  1618. C:\Program Files\Chiniks\SettingSyncHost.exe<br />
  1619. C:\Program Files\Chiniks\policymanager.dll<br />
  1620. D:\RECYCLER.BIN\1\CEFHelper.exe<br />
  1621. D:\RECYCLER.BIN\1\wsc.dll</p>
  1622. ]]></content:encoded>
  1623. <wfw:commentRss>https://securelist.com/detecting-dll-hijacking-with-machine-learning-in-kaspersky-siem/117567/feed/</wfw:commentRss>
  1624. <slash:comments>0</slash:comments>
  1625. <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>
  1626. <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>
  1627. <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>
  1628. <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>
  1629. </item>
  1630. </channel>
  1631. </rss>
  1632.  

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=https%3A//securelist.com/feed/

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