<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Cisco Talos Blog]]></title><description><![CDATA[Talos intelligence and world-class threat research team better protects you and your organization against known and emerging cybersecurity threats.]]></description><link>https://blog.talosintelligence.com/</link><image><url>https://blog.talosintelligence.com/favicon.png</url><title>Cisco Talos Blog</title><link>https://blog.talosintelligence.com/</link></image><generator>Ghost 6.54</generator><lastBuildDate>Mon, 20 Jul 2026 20:30:42 GMT</lastBuildDate><atom:link href="https://blog.talosintelligence.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Begun, the Patch Wars have]]></title><description><![CDATA[Long foretold, the Great Patching has begun and it’s a doozy. Buckle in as Joe takes you through the story.]]></description><link>https://blog.talosintelligence.com/begun-the-patch-wars-have/</link><guid isPermaLink="false">6a58c99722de2d00010884e0</guid><category><![CDATA[Threat Source newsletter]]></category><dc:creator><![CDATA[Joe Marshall]]></dc:creator><pubDate>Thu, 16 Jul 2026 18:00:50 GMT</pubDate><media:content url="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/threat_source-1.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/threat_source-1.jpg" alt="Begun, the Patch Wars have"><p>Welcome to this week&#x2019;s edition of the Threat Source newsletter.&#xA0;</p><p>We all knew, to some degree or another, that this summer was going to a hot mess. I don&#x2019;t mean FIFA drama or record setting heat waves. I mean the slow but steady momentum that AI frontier models were accruing for vulnerability research. If you were like me, and guesstimating exactly when that shoe would drop, my money was on the middle of summer. And... well, friends, I hate to say it, but I was right.&#xA0;&#xA0;</p><p>This July&#x2019;s Patch Tuesday is an absolute whopper. There are 622 vulnerabilities being patched, with 62 being a critical severity. To put this context, this month alone has more vulnerabilities listed than all of 2018 combined. Three are zero days, <em>two of which are being </em><a href="https://www.bleepingcomputer.com/news/microsoft/microsoft-july-2026-patch-tuesday-fixes-massive-570-flaws-3-zero-days/" rel="noreferrer noopener"><em><u>actively exploited</u></em></a><em>. </em>July is usually a quiet month historically &#x2013; two years ago, it was just five patches issued in total! These are wild times, friends.&#xA0;&#xA0;</p><p>Microsoft has said this is due their AI frontier-accelerated research. We knew that this was coming, but what I am less sure about are companies that can meet the demand of this patch flood and getting these patches out to their infrastructures. The pessimist in me knows how most IT enterprises operate: You test, review stability, and then deploy. There&#x2019;s a lag there &#x2013; always has been, always will be. But that system worked under a sane patching load. As surely as much as Microsoft is using frontier models to research and announce vulnerabilities, <strong>so every is every other vendor.</strong>&#xA0;&#xA0;</p><p>Either through bug bounty programs or their own internal research, vendors are eating these bugs from a fire hose. Some are straight-up slop and just noise, but some have absolute value and need to be fixed. A giant like Microsoft has the money and resources to address this &#x2013; as well they should. But for every Microsoft, there are five other companies who don&#x2019;t have those resources. They&#x2019;ll get bugs analyzed and patches issued, surely, but it will be on a much longer timeline.&#xA0;&#xA0;</p><p>The trick, I think, will be identifying what is a &#x201C;surge&#x201D; vs. our new normal. If everything is a fire drill to patch, then nothing is a fire drill. What might just be a hot summer for patching, might turn into a 12-month fusillade of KEV and EPSS notifications, with companies already under the gun taxed even more.&#xA0;</p><p>I truly don&#x2019;t know how this ends, but&#x2026; Find your change management and IT administrators and give then a hug. There are going to be some long days and hard questions to answer, and they&#x2019;ll need all the help they can get.&#xA0;</p><h2 id="the-one-big-thing">The one big thing&#xA0;</h2><p>Cisco Talos is <a href="https://blog.talosintelligence.com/uat-11795-deploys-novel-starland-rat-and-bespoke-wldr-c2-implant-in-financially-motivated-campaign" rel="noreferrer noopener"><u>disclosing a new campaign</u></a> by UAT-11795, a sophisticated, financially motivated Russian-speaking adversary targeting users in the U.S. and Europe since at least June 2025. UAT-11795 uses trojanized software installers &#x2014; including popular tools like Webex, Zoom, and MobaXterm &#x2014; to deliver a custom Python-based remote access tool we track as &quot;Starland RAT.&quot; This RAT acts as a gateway to deploy further malicious payloads, most notably a bespoke, in-memory PowerShell command-and-control (C2) implant known as the &quot;WLDR agent.&quot;&#xA0;</p><h3 id="why-do-i-care">Why do I care?&#xA0;</h3><p>This opportunistic campaign casts a wide net across multiple victim profiles, turning a simple software download into a full-blown compromise. UAT-11795 employs highly evasive techniques, including AMSI and ETW bypasses, and uses a clever blockchain-anchored fallback mechanism to maintain persistent command and control. Once inside, attackers rapidly deploy secondary payloads like CastleStealer and Remcos RAT to siphon high-value credentials and cryptocurrency assets.&#xA0;</p><h3 id="so-now-what">So now what?&#xA0;</h3><p>Educate your users on ClickFix social engineering tactics and the dangers of unofficial software downloads. Monitor for suspicious execution of mshta.exe and unusual PowerShell activity, particularly scripts executing from memory or creating unexpected scheduled tasks. Ensure endpoint detection solutions are tuned to catch in-memory execution and AMSI tampering. <a href="https://blog.talosintelligence.com/uat-11795-deploys-novel-starland-rat-and-bespoke-wldr-c2-implant-in-financially-motivated-campaign" rel="noreferrer noopener"><u>Read the full blog</u></a> for coverage and indicators of compromise (IOCs).&#xA0;</p><h2 id="top-security-headlines-of-the-week">Top security headlines of the week&#xA0;</h2><p><strong>Microsoft patches record 622 flaws, including two zero-days under active attack</strong>&#xA0;<br>Microsoft shipped its largest Patch Tuesday on record, more than triple June&apos;s previous high of around 200. (<a href="https://thehackernews.com/2026/07/microsoft-patches-record-622-flaws.html" rel="noreferrer noopener"><u>The Hacker News</u></a>)&#xA0;</p><p><strong>RabbitMQ vulnerability threatens enterprise systems</strong>&#xA0;<br>RabbitMQ is a popular open-source message broker that routes, buffers, and distributes messages, enabling asynchronous communication between applications. The security defect impacts an open management endpoint that returns the OAuth secret to anyone, without authentication. (<a href="https://www.securityweek.com/rabbitmq-vulnerability-threatens-enterprise-systems/" rel="noreferrer noopener"><u>SecurityWeek</u></a>)&#xA0;</p><p><strong>Nigeria deepens cybersecurity efforts as cybercriminals see more profits</strong>&#xA0;<br>The West African country advanced rules to force organizations to disclose cyberattacks, joining other nations in a shift to mandated transparency. (<a href="https://www.darkreading.com/cyber-risk/nigeria-cybersecurity-efforts-cybercriminals-profits" rel="noreferrer noopener"><u>DarkReading</u></a>)&#xA0;</p><p><strong>Two-click cursor exploit enables dev environment takeover</strong>&#xA0;<br>Cursor AI, a popular AI coding tool used by more than 50,000 enterprises and 64% of the Fortune 500, can be exploited in just two clicks, allowing attackers to install permission-rich model context protocol (MCP) servers on privileged developers&apos; machines. (<a href="https://www.darkreading.com/application-security/2-click-cursor-exploit-dev-environment-takeover" rel="noreferrer noopener"><u>DarkReading</u></a>)&#xA0;</p><h2 id="can%E2%80%99t-get-enough-talos">Can&#x2019;t get enough Talos?&#xA0;</h2><p><a href="https://blog.talosintelligence.com/video-where-protection-starts-cisco-talos-intelligence-integrations/" rel="noreferrer noopener"><strong><u>[Video] Where protection starts: Cisco Talos Intelligence Integrations</u></strong></a>&#xA0;<br>Every day, defenders make high-consequence decisions with incomplete information. Learn how Cisco Talos Intelligence Integrations help reduce uncertainty by turning the latest threat intelligence into proactive protections across Cisco technologies.&#xA0;</p><p><a href="https://blog.talosintelligence.com/the-hunters-paradox-is-it-time-to-embrace-automated-threat-hunting/" rel="noreferrer"><strong>The Hunter&apos;s Paradox: Is it time to embrace automated threat hunting?</strong></a><br>Humans can no longer keep up with the volume and velocity of security data on their own, but AI can&apos;t be fully trusted. David discusses the merits of both and what the future might look like.</p><p><a href="https://blog.talosintelligence.com/the-serpents-tongue-luring-the-python-out-of-its-den/" rel="noreferrer noopener"><strong><u>The serpent&#x2019;s tongue: Luring the Python out of its den</u></strong></a>&#xA0;<br>Protect your development environment from rising Python supply-chain threats by understanding the package installation lifecycle and implementing these essential defensive strategies.&#xA0;</p><p><a href="https://www.buzzsprout.com/2018149/episodes/19492714" rel="noreferrer noopener"><strong><u>ARToken: How attackers are bypassing MFA and maintaining access</u></strong></a>&#xA0;<br>In this episode of Talos Takes, we dive deep into ARToken, a sophisticated phishing-as-a-service platform that steals credentials, bypasses MFA entirely, and leverages primary refresh tokens (PRTs) to maintain persistence in your environment long after a password reset.&#xA0;</p><h2 id="upcoming-events-where-you-can-find-talos">Upcoming events where you can find Talos&#xA0;</h2><ul><li><a href="https://blackhat.com/us-26/" rel="noreferrer noopener"><u>Black Hat USA</u></a> (Aug. 1 &#x2013; 6) Las Vegas, NV&#xA0;</li><li><a href="https://defcon.org/html/defcon-34/dc-34-index.html" rel="noreferrer noopener"><u>DEF CON 34</u></a> (Aug. 6 &#x2013; 9) Las Vegas, NV&#xA0;</li></ul><h2 id="most-prevalent-malware-files-from-talos-telemetry-over-the-past-week">Most prevalent malware files from Talos telemetry over the past week&#xA0;</h2><p><strong>SHA256: 9f1f11a708d393e0a4109ae189bc64f1f3e312653dcf317a2bd406f18ffcc507</strong>&#xA0;<br>MD5: 2915b3f8b703eb744fc54c81f4a9c67f&#xA0;<br>Talos Rep: <a href="https://talosintelligence.com/talos_file_reputation?s=9f1f11a708d393e0a4109ae189bc64f1f3e312653dcf317a2bd406f18ffcc507" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=9f1f11a708d393e0a4109ae189bc64f1f3e312653dcf317a2bd406f18ffcc507</u></a>&#xA0;<br>Example Filename: VID001.exe &#xA0;<br>Detection Name: Win.Worm.Coinminer::1201**&#xA0;</p><p><strong>SHA256: 9896a6fcb9bb5ac1ec5297b4a65be3f647589adf7c37b45f3f7466decd6a4a7f</strong>&#xA0;<br>MD5: 38de5b216c33833af710e88f7f64fc98&#xA0;<br>Talos Rep: <a href="https://talosintelligence.com/talos_file_reputation?s=9896a6fcb9bb5ac1ec5297b4a65be3f647589adf7c37b45f3f7466decd6a4a7f" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=9896a6fcb9bb5ac1ec5297b4a65be3f647589adf7c37b45f3f7466decd6a4a7f</u></a>&#xA0;<br>Example Filename: SECOH-QAD.exe&#xA0;<br>Detection Name: Win.Tool.Procpatcher::1201&#xA0;</p><p><strong>SHA256: 90b1456cdbe6bc2779ea0b4736ed9a998a71ae37390331b6ba87e389a49d3d59</strong> &#xA0;<br>MD5: c2efb2dcacba6d3ccc175b6ce1b7ed0a &#xA0;<br>Talos Rep: <a href="https://talosintelligence.com/talos_file_reputation?s=90b1456cdbe6bc2779ea0b4736ed9a998a71ae37390331b6ba87e389a49d3d59" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=90b1456cdbe6bc2779ea0b4736ed9a998a71ae37390331b6ba87e389a49d3d59</u></a>&#xA0;<br>Example Filename: tmp00055df5.dll &#xA0;<br>Detection Name: Auto.90B145.282358.in02&#xA0;</p><p><strong>SHA256: b8be9a5e0a191050f9099c11c155b436863e9bc43bc904cdb842e249679aa35a</strong>&#xA0;<br>MD5: 0398df5a18f71efcfeef4571a2cef577&#xA0;<br>Talos Rep: <a href="https://talosintelligence.com/talos_file_reputation?s=b8be9a5e0a191050f9099c11c155b436863e9bc43bc904cdb842e249679aa35a" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=b8be9a5e0a191050f9099c11c155b436863e9bc43bc904cdb842e249679aa35a</u></a>&#xA0;<br>Example Filename: b8be9a5e0a191050f9099c11c155b436863e9bc43bc904cdb842e249679aa35a.js&#xA0;<br>Detection Name: W32.B8BE9A5E0A-95.SBX.TG&#xA0;</p>]]></content:encoded></item><item><title><![CDATA[The Hunter's Paradox: Is it time to embrace automated threat hunting?]]></title><description><![CDATA[Humans can no longer keep up with the volume and velocity of security data on their own, but AI can't be fully trusted. David discusses the merits of both and muses on what the future might look like.]]></description><link>https://blog.talosintelligence.com/the-hunters-paradox-is-it-time-to-embrace-automated-threat-hunting/</link><guid isPermaLink="false">6a579ecd22de2d000108847b</guid><category><![CDATA[On The Radar]]></category><category><![CDATA[Threats]]></category><dc:creator><![CDATA[David J. Bianco]]></dc:creator><pubDate>Thu, 16 Jul 2026 10:00:07 GMT</pubDate><media:content url="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/on_the_radar.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/on_the_radar.jpg" alt="The Hunter&apos;s Paradox: Is it time to embrace automated threat hunting?"><p>Should we let AI run our threat hunts? The debate usually splits into two camps. One says, &quot;Yes, obviously! The sheer scale of our security telemetry is impossible for humans to deal with.&quot; The other says, &quot;Absolutely <em>not</em>!&#xA0; You can&apos;t trust an AI with something this important.&quot;&#xA0;&#xA0;</p><p>The thing is, I think both are wrong, or at least incomplete.&#xA0;&#xA0;</p><p>I&apos;ve spent a long time as one of the louder voices saying that hunting is specifically a human-driven process. I created the first widely recognized definition of threat hunting back in 2015, and the version I&apos;d have given you until very recently put a human firmly at the center of it.&#xA0;&#xA0;</p><p>But lately I&apos;ve been reconsidering the role of AI in threat hunting. So this post is, in part, me arguing with my past self.&#xA0;&#xA0;</p><p>We&apos;re facing what I call the Hunter&apos;s Paradox: Humans can no longer keep up with the volume and velocity of security data on their own, so we need to lean on automation. But the most capable automation available, AI, is exactly the kind we can&apos;t fully trust. Both are true at once, and that tension is what I&apos;ve been wrestling with for a while. We can&#x2019;t resolve it cleanly by picking either side, so let&apos;s take them in turn, starting with the human element.&#xA0;</p><h2 id="humans-have-a-numbers-problem">Humans have a numbers problem&#xA0;</h2><p>So why not just keep humans in the driver&apos;s seat and call it a day? Because that math stopped working a long time ago.&#xA0;</p><p>When I started in this field about 30 years ago, the conventional advice was that system administrators should read all their logs every day. It probably wasn&apos;t realistic even then, and it has been thoroughly impossible for most of my career. That&apos;s the volume problem, and it only ever compounds. There&apos;s more data than anyone can read, and there&apos;s more of it every year.&#xA0;</p><p>Then there&apos;s velocity. Automated attacks already move at close to machine speed, and even human-driven intrusions routinely outpace human defenders. AI on the offensive side is making that gap wider, not narrower.&#xA0;</p><p>And finally, there&apos;s capacity. This isn&apos;t the usual complaint about being under-resourced. That may still be true, but the problem is deeper than that. Volume and velocity together have pushed us to a place where it is simply not possible for humans to keep up no matter how many of us there are. If your team can still manage today, the trend line says it won&apos;t be able to for long. Even a perfectly staffed, perfectly funded team can&#x2019;t beat that math forever.&#xA0;</p><p>Put those three pressures together and opting out of AI isn&apos;t really an option. We can&apos;t hunt at scale without it, which lands us right back in the paradox: we need a tool we can&apos;t fully trust.&#xA0;</p><h2 id="ai-doesn%E2%80%99t-deal-well-with-lies">AI doesn&#x2019;t deal well with lies&#xA0;</h2><p>When most people think about AI and attackers, they think about prompt injection. An attacker slips instructions into something the AI will read, the AI dutifully follows them, and now your defensive tooling is working for the other team. It&apos;s real, it&apos;s a problem, and you should design with it in mind. It&apos;s also the less interesting part of the trust problem, so I&apos;m going to acknowledge it and move on.&#xA0;</p><p>The deeper issue is that attackers lie and cheat constantly, whether or not they think an AI might be watching. Deception isn&apos;t a tactic they reach for occasionally; it&apos;s the medium they operate in. Every phish, every exploit, every defense evaded is a lie that has to be believed in order to work. That has always been true, long before AI showed up.&#xA0;</p><p>Pervasive deception is <a href="https://blogs.cisco.com/ai/open-model-vulnerability-analysis" rel="noreferrer noopener"><u>a</u></a> <a href="https://arxiv.org/abs/2601.05478" rel="noreferrer noopener"><u>real</u></a> <a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6130766" rel="noreferrer noopener"><u>issue</u></a> for AI. It&#x2019;s baked into how we create LLMs: They have no concept that their training data might be deceiving them, and so when they come into the real world and deal with our dirty data, they tend to take it at face value. Not every time, maybe, but enough that their judgment is noticeably skewed even when we explicitly tell them to detect shenanigans.&#xA0; Even the most accurate telemetry isn&apos;t trustworthy if it&apos;s faithfully recording a lie, and AI tends to process what it&apos;s given and believe it.&#xA0;</p><h2 id="solving-the-paradox-starts-with-a-definition">Solving the paradox starts with a definition&#xA0;</h2><p>Now that we understand how deep of a hole we&#x2019;re in, we can start thinking about how we might get out of it. Let&#x2019;s start with the very definition of <em>threat hunting</em> itself.&#xA0;</p><p>Back in 2015, I was the architect behind the <a href="https://www.threathunting.net/sqrrl-archive" rel="noreferrer noopener"><u>Sqrrl threat hunting framework</u></a>. I defined hunting as &quot;any manual or machine-assisted process for identifying security incidents your automated detection systems missed.&quot; That same definition carried forward into our <a href="https://www.splunk.com/en_us/blog/security/peak-threat-hunting-framework.html" rel="noreferrer noopener"><u>PEAK framework</u></a> in 2023, of which I was the lead author. This has been the working definition for much of the field for a decade, though often in different words.&#xA0;</p><p>That phrase right at the front, &quot;manual or machine-assisted,&quot; is the entire reason I&#x2019;ve been thinking about this so hard. What that phrase actually meant was that humans drive the hunt. Machines can assist, through analytics or machine learning or whatever tooling you had, but a person was always the one doing the hunting.&#xA0;&#xA0;</p><p>And honestly, that was the right call at the time. But if I look back at what I was really trying to capture with that definition, the essential ingredient was never the human. It was <em>reasoning</em>. Humans were just the only place to get it in 2015.&#xA0;&#xA0;</p><p>But that&#x2019;s no longer the case. AI can reason now &#x2014; maybe not as well as a good human analyst, but it really can reason in a way that the tools of 2015 could not. So maybe the definition should change to match what I really meant. Threat hunting might be better described as &quot;any <em>reasoning-driven</em> process for identifying security incidents your automated detection systems missed.&quot;&#xA0;&#xA0;</p><p>Reframing hunting around reasoning rather than around who&apos;s doing it feels more accurate to the original intent, and it&apos;s a lot more useful for working through the paradox. If reasoning is the point, then the question isn&apos;t whether the hunter is human or machine. It&apos;s whether there&apos;s real reasoning involved.&#xA0;</p><h2 id="if-it%E2%80%99s-really-about-reasoning-what-does-that-mean">If it&#x2019;s really about reasoning, what does that mean?&#xA0;</h2><p>If we accept that AI can reason and hunting is a reasoning-driven process, then letting AI drive starts to seem&#x2026; well, reasonable.&#xA0;</p><p>The next big question, then, is what should that actually look like? Just saying, &quot;AI, go find the evil!&quot; is not a real plan. I wouldn&apos;t hand most human hunters that assignment either. Letting AI hunt responsibly takes careful planning, and more importantly it takes guardrails. At least three things matter.&#xA0;</p><p>The first is <strong>tight focus</strong>. Decide deliberately which hunts you&apos;re willing to let AI drive. The procedure should be reasonably clear, but the hunt should still contain some real ambiguity. It&#x2019;s the ambiguity that requires reasoning, and if there&#x2019;s no reasoning at all you don&apos;t have a hunt, you have a SIEM rule. A good place to start is the pile of hunts you&apos;ve run before but never quite managed to fully automate. Most teams have at least one of those sitting in a backlog.&#xA0;</p><p>The second is <strong>strict guidelines</strong>. An AI agent operating in your environment is a non-human principal with credentials, and it should be treated with at least as much care as a service account: scoped access, audit trails, the ability to revoke and rotate, and never more privilege than your most junior hunter would get. You also have to decide ahead of time which actions the AI can take on its own and which it cannot. Maybe you let it quarantine a user endpoint when it&apos;s confident something is wrong. Quarantining a production server? Probably not.&#xA0;</p><p>The third is <strong>graduated autonomy</strong>. Don&apos;t jump straight to full hunting independence. Let the AI act as an advisor first, then an assistant, then an operator on narrowly defined tasks, earning a little more trust at each step. Remember: Your threat actors don&#x2019;t have to care about collateral damage, but <em>you do</em>. We&#x2019;ve all heard the horror stories about AIs that deleted the production database. If your AI oversteps its boundaries, you&#x2019;re more likely to actually <em>cause</em> incidents than to detect them.&#xA0;</p><h2 id="what-stays-human">What stays human&#xA0;</h2><p>Even with all of that working well, there are still things that humans will be markedly better at for the foreseeable future, but they mostly trace back to one aspect: creativity.&#xA0;</p><p>One important creative area is your hunt strategy &#x2014; that is, deciding what&apos;s worth hunting for in the first place, what to prioritize, and in what order. That&apos;s running the hunt program, and it shouldn&apos;t be delegated to the AI. It can execute hunts, but it shouldn&apos;t be allowed to decide which hunts matter.&#xA0;</p><p>Another important creative area is analytic novelty. Attackers are creative, so we have to be creative too, both in what we choose to look for and in how we analyze our data. The biggest payoff in hunting comes from finding the thing nobody thought to look for, and an AI&apos;s training data by definition doesn&apos;t include the attacker behavior nobody has seen yet. Lean too hard on AI to generate your hunting procedures and you&apos;ll quietly converge on well-trodden ground, leaving the truly new stuff as your blind spot.&#xA0;&#xA0;</p><p>Put together, we almost have another guideline: Humans pick what&apos;s worth hunting and how. AI executes within those bounds.&#xA0;</p><h2 id="where-we-go-from-here">Where we go from here&#xA0;</h2><p>So, should we let AI start driving some hunts? Probably, yes, but that was never really the hard question. The hard question is <em>how</em>, and that&apos;s the part we have to work out together.&#xA0;</p><p>I don&apos;t have all the answers, and I&apos;m not pretending this is a finished playbook. What I&apos;m sure of is that reframing hunting around reasoning, applying narrow focus and strict guidelines and graduated autonomy, and keeping humans firmly in charge of strategy and novelty are good things to keep in mind as we figure it out. You hunters reading this are the ones who are actually going to shape what AI hunting becomes. It&#x2019;s going to be on all of us to experiment, to try things, and then to share what we&#x2019;ve built &#x2014; whether that&apos;s code on GitHub, a blog post, or a conference talk. The whole field gets better when we share what worked and what didn&apos;t. I&apos;m eagerly looking forward to seeing what we come up with.&#xA0;</p>]]></content:encoded></item><item><title><![CDATA[UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign]]></title><description><![CDATA[Cisco Talos is disclosing UAT-11795, a sophisticated, Russian-speaking, financially motivated adversary that has been conducting a malicious campaign targeting users in the U.S. and Europe since at least June 2025.  ]]></description><link>https://blog.talosintelligence.com/uat-11795-deploys-novel-starland-rat-and-bespoke-wldr-c2-implant-in-financially-motivated-campaign/</link><guid isPermaLink="false">6a511e0b501b2f00010617e7</guid><category><![CDATA[Threats]]></category><category><![CDATA[RAT]]></category><category><![CDATA[Cisco Talos Antivirus]]></category><category><![CDATA[Cisco Talos DNS Security]]></category><category><![CDATA[Cisco Talos Malware Protection]]></category><category><![CDATA[Cisco Talos Network Intrusion Prevention]]></category><category><![CDATA[Landing Page Top Story]]></category><category><![CDATA[Top Story]]></category><dc:creator><![CDATA[Alex Karkins]]></dc:creator><pubDate>Thu, 16 Jul 2026 10:00:01 GMT</pubDate><media:content url="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/starlandrat.jpg" medium="image"/><content:encoded><![CDATA[<ul><li>Cisco Talos is disclosing UAT-11795, a sophisticated, Russian-speaking, financially motivated adversary that has been conducting a malicious campaign targeting users in the U.S. and Europe since at least&#xA0;June&#xA0;2025.&#xA0;&#xA0;</li><li>Talos has discovered that the actor in this campaign delivers a Python-based&#xA0;remote&#xA0;access&#xA0;tool (RAT) that we track as &#x201C;Starland RAT&#x201D;&#xA0;and a&#xA0;command-and-control (C2)&#xA0;memory implant known as the &#x201C;WLDR agent.&#x201D;&#xA0;</li><li>The WLDR agent is a sophisticated PowerShell-based C2 memory implant that features encrypted beaconing, task queuing, and a&#xA0;Runspace&#xA0;execution engine for executing&#xA0;additional&#xA0;payloads.&#xA0;&#xA0;</li><li>UAT-11795 also&#xA0;has&#xA0;CastleStealer&#xA0;and&#xA0;Remcos&#xA0;RAT as alternative payload implants in their arsenal.&#xA0;</li><li>The actor targets victims&apos; credentials and cryptocurrency wallet assets,&#xA0;establishing&#xA0;a persistent connection to the victims&apos; machines from the C2&#xA0;server, with the potential to deliver and execute further payloads.&#xA0;</li></ul><h2 id="victimology">Victimology&#xA0;</h2><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/starlandrat.jpg" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign"><p>According to the telemetry data, the infection is&#xA0;predominantly observed&#xA0;in the United States.&#xA0;There are also&#xA0;fewer potential impacts&#xA0;observed&#xA0;in Germany, Romania, and Venezuela,&#xA0;based on&#xA0;the&#xA0;assessment of the&#xA0;passive DNS resolution data of the C2 domains associated with this campaign.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Starland-RAT-03.jpg" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="2000" height="1268" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/Starland-RAT-03.jpg 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/Starland-RAT-03.jpg 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/Starland-RAT-03.jpg 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w2400/2026/07/Starland-RAT-03.jpg 2400w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure 1.&#xA0;Victimology map of this campaign.</span></figcaption></figure><p>Talos has&#xA0;observed&#xA0;that the threat actor in this campaign has utilized&#xA0;trojanized&#xA0;installer lures from software categories including:&#xA0;</p>
<!--kg-card-begin: html-->
<table class="Table Ltr TableWordWrap SCXW164907214 BCX4" border="1" dir="ltr" data-tablestyle="MsoTableGrid" data-tablelook="1696" aria-rowcount="5" style="font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid; -webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; table-layout: fixed; width: 1px; border-collapse: collapse; empty-cells: show; position: relative; overflow: visible; caret-color: rgba(0, 0, 0, 0.847); color: rgba(0, 0, 0, 0.847); font-family: &quot;Segoe UI&quot;, &quot;Segoe UI Web&quot;, Arial, Verdana, sans-serif; font-size: 12px; background: none; border-spacing: 0px;"><tbody class="SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text;"><tr class="TableRow SCXW164907214 BCX4" role="row" aria-rowindex="1" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 19px;"><td class="FirstRow FirstCol SCXW164907214 BCX4" role="rowheader" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 278px;"><div class="TableCellContent SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW164907214 BCX4" paraid="415952299" paraeid="{12d0fb38-38de-4e11-a7da-dc9dced0814c}{29}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Trojanized</span><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;"><span class="Apple-converted-space">&#xA0;</span></span><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">i</span><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">nstaller&#xA0;</span></span><span class="EOP SCXW164907214 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="FirstRow SCXW164907214 BCX4" role="columnheader" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 138px;"><div class="TableCellContent SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW164907214 BCX4" paraid="772388752" paraeid="{12d0fb38-38de-4e11-a7da-dc9dced0814c}{32}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Software name</span></span><span class="EOP SCXW164907214 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="FirstRow LastCol SCXW164907214 BCX4" role="columnheader" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 208px;"><div class="TableCellContent SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW164907214 BCX4" paraid="1978402571" paraeid="{12d0fb38-38de-4e11-a7da-dc9dced0814c}{35}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Software category</span></span><span class="EOP SCXW164907214 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW164907214 BCX4" role="row" aria-rowindex="2" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 19px;"><td class="FirstCol SCXW164907214 BCX4" role="rowheader" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 278px;"><div class="TableCellContent SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW164907214 BCX4" paraid="391961955" paraeid="{12d0fb38-38de-4e11-a7da-dc9dced0814c}{39}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">MobaXterm_v26.1.exe</span></span><span class="EOP SCXW164907214 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td data-celllook="0" class="SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 138px;"><div class="TableCellContent SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW164907214 BCX4" paraid="732060854" paraeid="{12d0fb38-38de-4e11-a7da-dc9dced0814c}{42}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">MobaXterm</span></span><span class="EOP SCXW164907214 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW164907214 BCX4" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 208px;"><div class="TableCellContent SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW164907214 BCX4" paraid="1243028410" paraeid="{12d0fb38-38de-4e11-a7da-dc9dced0814c}{45}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">SSH, remote desktop, and network administration terminal</span></span><span class="EOP SCXW164907214 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW164907214 BCX4" role="row" aria-rowindex="3" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 19px;"><td class="FirstCol SCXW164907214 BCX4" role="rowheader" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 278px;"><div class="TableCellContent SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW164907214 BCX4" paraid="1918371728" paraeid="{12d0fb38-38de-4e11-a7da-dc9dced0814c}{49}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">WebEx_Client.exe and Zoom installer</span></span><span class="EOP SCXW164907214 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td data-celllook="0" class="SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 138px;"><div class="TableCellContent SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW164907214 BCX4" paraid="764574854" paraeid="{12d0fb38-38de-4e11-a7da-dc9dced0814c}{52}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Cisco<span class="Apple-converted-space">&#xA0;</span></span><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">WebEx</span><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;"><span class="Apple-converted-space">&#xA0;</span>and Zoom</span></span><span class="EOP SCXW164907214 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW164907214 BCX4" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 208px;"><div class="TableCellContent SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW164907214 BCX4" paraid="1929588985" paraeid="{12d0fb38-38de-4e11-a7da-dc9dced0814c}{55}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">enterprise video conferencing and collaboration platforms</span></span><span class="EOP SCXW164907214 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW164907214 BCX4" role="row" aria-rowindex="4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 19px;"><td class="FirstCol SCXW164907214 BCX4" role="rowheader" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 278px;"><div class="TableCellContent SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW164907214 BCX4" paraid="200160957" paraeid="{12d0fb38-38de-4e11-a7da-dc9dced0814c}{59}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">dbeaver-ce-windows-x86_64.exe</span></span><span class="EOP SCXW164907214 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td data-celllook="0" class="SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 138px;"><div class="TableCellContent SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW164907214 BCX4" paraid="428081025" paraeid="{12d0fb38-38de-4e11-a7da-dc9dced0814c}{62}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">DBeaver</span><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Community Edition</span></span><span class="EOP SCXW164907214 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW164907214 BCX4" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 208px;"><div class="TableCellContent SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW164907214 BCX4" paraid="754531526" paraeid="{12d0fb38-38de-4e11-a7da-dc9dced0814c}{65}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">open-source database management and SQL client</span></span><span class="EOP SCXW164907214 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW164907214 BCX4" role="row" aria-rowindex="5" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 19px;"><td class="FirstCol LastRow SCXW164907214 BCX4" role="rowheader" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 278px;"><div class="TableCellContent SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW164907214 BCX4" paraid="1422692154" paraeid="{12d0fb38-38de-4e11-a7da-dc9dced0814c}{69}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">FaceitInstaller_x64.exe</span></span><span class="EOP SCXW164907214 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastRow SCXW164907214 BCX4" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 138px;"><div class="TableCellContent SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW164907214 BCX4" paraid="179243413" paraeid="{12d0fb38-38de-4e11-a7da-dc9dced0814c}{72}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">FACEIT</span></span><span class="EOP SCXW164907214 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol LastRow SCXW164907214 BCX4" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 208px;"><div class="TableCellContent SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW164907214 BCX4" paraid="1461961856" paraeid="{12d0fb38-38de-4e11-a7da-dc9dced0814c}{75}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW164907214 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">online gaming platform</span></span><span class="EOP SCXW164907214 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p></p><p>The breadth of&#xA0;trojanized&#xA0;software across developer tooling, IT administration utilities, enterprise collaboration platforms, and a consumer gaming application suggests the actor is&#xA0;operating&#xA0;an opportunistic, volume-driven distribution model targeting multiple victim profiles simultaneously,&#xA0;rather than a single vertical.&#xA0;</p><h2 id="threat-actor-infrastructure">Threat actor&#xA0;infrastructure&#xA0;</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Starland-RAT.jpg" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="2000" height="1455" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/Starland-RAT.jpg 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/Starland-RAT.jpg 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/Starland-RAT.jpg 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w2400/2026/07/Starland-RAT.jpg 2400w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure&#xA0;2.&#xA0;Cisco Umbrella domain resolution statistics for the malicious domains during the research window.</span></figcaption></figure><p>The threat actor in this campaign&#xA0;operates&#xA0;a distributed infrastructure across two functional categories, payload staging and persistent&#xA0;C2,&#xA0;with domain naming conventions chosen to blend into legitimate traffic categories.&#xA0;The staging domains,&#xA0;including&#xA0;&#x201C;eorthopaedics[.]com&#x201D;&#xA0;(likely a&#xA0;hijacked domain),&#xA0;&#x201C;web-devtools[.]com&#x201D;&#xA0;(resembles&#xA0;a developer tooling portal),&#xA0;and &#x201C;zynaris[.]io&#x201D;&#xA0;(resembles a&#xA0;technology start-up),&#xA0;with each domain serving a narrow functional role:&#xA0;&#xA0;</p><ul><li>&#x201C;eorthopaedics[.]com&#x201D;&#xA0;and &#x201C;sastoro[.]com&#x201D;&#xA0;hosts the PowerShell stage chain under&#xA0;&#x201C;/feed/&#x201D;&#xA0;and &#x201C;/alpha/&#x201D; paths&#xA0;indicating&#xA0;that&#xA0;the actor&#xA0;has added the malicious routing alongside the legitimate contents.&#xA0;</li><li>&#x201C;web-devtools[.]com&#x201D;&#xA0;serves raw shellcode payloads under the paths (&#x201C;/starlandfox&#x201D;,&#xA0;&#x201C;/x32remka&#x201D;,&#xA0;&#x201C;/dopfile&#x201D;) and a compressed archive.&#xA0;</li><li>&#x201C;zynaris[.]io&#x201D;&#xA0;hosts the potential&#xA0;ClickFix-delivered&#xA0;HTML application (HTA)&#xA0;stager and&#xA0;trojanised&#xA0;installer lures.&#xA0;</li></ul><p>The C2 infrastructure is similarly distributed, with&#xA0;&#x201C;eorthopaedics[.]com&#x201D;&#xA0;and&#xA0;&#x201C;sastoro[.]com&#x201D;&#xA0;both serving&#xA0;hardware-bound unique identifier&#xA0;(HWID)&#xA0;encrypted envelopes over HWID parameterized URL paths with&#xA0;&#x201C;eorthopaedics[.]com&#x201D;&#xA0;under&#xA0;&#x201C;/feed/&#x201D;&#xA0;and&#xA0;&#x201C;sastoro[.]com&#x201D;&#xA0;under&#xA0;&#x201C;/alpha/&#x201D;.&#xA0;This&#xA0;suggests that&#xA0;the two domains&#xA0;represent&#xA0;parallel C2 infrastructure used for the same campaign.&#xA0;</p><p>The domains&#xA0;&#x201C;windowscreenrepairnearme[.]com&#x201D;&#xA0;(which&#xA0;is&#xA0;also likely&#xA0;to be a hijacked&#xA0;domain)&#xA0;and&#xA0;&#x201C;aipythondevs[.]com&#x201D;&#xA0;serve&#xA0;as the&#xA0;primary&#xA0;C2 for the Starland Python RAT. All C2 URLs incorporate a victim hardware identifier derived from the C: drive&#xA0;volume serial number of the victim machine as the final URL path&#xA0;component, enabling the distinct C2 communication for each of the compromised victims. The actor in this campaign has also implemented C2 infrastructure resilience by using a Polygon smart contract&#xA0;(&#x201C;0x6ae382ed2154cc84c6672e4e908cd2c69c1b35ba&#x201D;),&#xA0;which stores an XOR-encrypted fallback C2 domain&#xA0;that is&#xA0;retrievable via a public JSON-RPC call.&#xA0;&#xA0;</p><p>Talos discovered that the actor controls two&#xA0;Telegram bots,&#xA0;&#x201C;8384531459&#x201D;&#xA0;(&#x201C;skuefq_bot&#x201D;) and&#xA0;&#x201C;7993597060&#x201D;&#xA0;(&#x201C;komandastuk_bot&#x201D;),&#xA0;used for receiving the implant&#x2019;s execution notification beacons,&#xA0;including messages with victim&#x2019;s machine fingerprints and cryptocurrency&#xA0;wallet inventories.&#xA0;</p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Screenshot-2026-06-08-at-16.26.13-1-.png" width="873" height="641" loading="lazy" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/Screenshot-2026-06-08-at-16.26.13-1-.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Screenshot-2026-06-08-at-16.26.13-1-.png 873w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/08_53_55.png" width="478" height="343" loading="lazy" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign"></div></div></div><figcaption><p><span style="white-space: pre-wrap;">Figure&#xA0;3.&#xA0;Actor-controlled&#xA0;Telegram channel.&#xA0;</span></p></figcaption></figure><p>Talos&#x2019;&#xA0;research&#xA0;uncovered a&#xA0;private live&#xA0;Telegram channel&#xA0;called&#xA0;&#x201C;stuk&#xA0;komanda&#x201D;,&#xA0;controlled by the same threat actor.&#xA0;The&#xA0;stuk&#xA0;komanda&#xA0;channel was created on June 5,&#xA0;2025,&#xA0;and has three&#xA0;unknown subscribers. It does not&#xA0;contain&#xA0;any chat groups and appears to be structured like a C2. The channel lists messages in the name of file names that&#xA0;appear to be&#xA0;Windows-based binaries, highlighting that the threat actor&#xA0;has been&#xA0;active since at least June 2025.&#xA0;</p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Screenshot-2026-07-14-at-2.03.45---PM.png" width="587" height="827" loading="lazy" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign"></div><div class="kg-gallery-image"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Screenshot-2026-07-14-at-2.04.21---PM.png" width="628" height="675" loading="lazy" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/Screenshot-2026-07-14-at-2.04.21---PM.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Screenshot-2026-07-14-at-2.04.21---PM.png 628w"></div></div></div><figcaption><p><span style="white-space: pre-wrap;">Figure&#xA0;4.&#xA0;Messages seen&#xA0;on&#xA0;the&#xA0;Telegram channel.&#xA0;</span></p></figcaption></figure><h2 id="multi-stage-attack-summary">Multi-stage attack summary&#xA0;</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Starland-RAT-02.jpg" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="2000" height="2454" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/Starland-RAT-02.jpg 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/Starland-RAT-02.jpg 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/Starland-RAT-02.jpg 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w2400/2026/07/Starland-RAT-02.jpg 2400w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure&#xA0;5.&#xA0;Infection chain summary diagram.&#xA0;</span></figcaption></figure><p>The threat actor&#xA0;executed&#xA0;a multistage campaign that involves deploying a weaponized HTA&#xA0;downloader via Microsoft HTML Application Host (&#x201C;mshta.exe&#x201D;) on the victim&apos;s machine,&#xA0;likely utilizing&#xA0;a&#xA0;ClickFix&#xA0;technique. The execution of the HTA file results in the downloading and execution of&#xA0;trojanized&#xA0;installers bundled with a malicious Python package, which sends the implant status of the installer to an attacker-controlled Telegram bot. The NSIS script associated with the&#xA0;trojanized&#xA0;installer is designed to execute the malicious byte-compiled Python code encapsulated within the installer file.&#xA0;</p><p>This&#xA0;initial&#xA0;byte-compiled Python code acts as a loader that decodes and executes an embedded Python RAT, which we are calling Starland RAT, in the victim&apos;s machine memory. Starland RAT offers a wide range of functionalities and has been specifically engineered to&#xA0;operate&#xA0;within the Windows environment. Its capabilities include&#xA0;defense evasion techniques,&#xA0;system reconnaissance,&#xA0;stealing&#xA0;browser data and cryptocurrency&#xA0;wallets, and&#xA0;a fallback C2 connection mechanism that includes a hardcoded C2 URL, as well as a&#xA0;Polygon&#xA0;Ethereum&#xA0;smart&#xA0;contract&#xA0;that serves&#xA0;as a backup. This connection allows it to interact with the smart contract through <code>Eth_call</code>, dynamically resolving the C2 domains. The RAT sends the reconnaissance information to the C2 to register the victim&apos;s machine and is proficient in receiving and executing intermediate payloads in several formats, including&#xA0;shellcode for 64-bit and 32-bit Windows environments, directly executing Windows shell commands, and downloading and executing malicious EXE, MSI, and DLL files.&#xA0;</p><p>Talos has&#xA0;observed&#xA0;that the threat actor has distinct infection chains for each type of intermediate payload that Starland RAT receives from the C2. In the case of an x64 shellcode intermediate payload, it implants&#xA0;CastleStealer&#xA0;as the final payload.&#xA0;CastleStealer&#xA0;is a .NET stealer that targets credentials, cryptocurrency&#xA0;wallets, Telegram data, and other browser data from the victim&apos;s machine. Similarly, the x32 shellcode implants a variant of the&#xA0;Remcos&#xA0;RAT.&#xA0;</p><p>Furthermore, Talos has&#xA0;observed&#xA0;that the threat actor executed a Windows&#xA0;shell command through Starland RAT as an intermediate payload to download and execute a PowerShell stager. This stager is&#xA0;associated with an undocumented PowerShell C2 framework, which we track as &#x201C;WLDR C2&#x201D;&#xA0;in alignment with&#xA0;the internal project designation used by the threat actor in the PowerShell scripts. The PowerShell stager is heavily obfuscated and is designed to decrypt an embedded next-stage PowerShell loader. The second-stage PowerShell loader script has capabilities for defense evasion, connects to the C2, downloads a JSON response, and processes this response to execute another embedded PowerShell payload, the WLDR agent, in the victim&apos;s machine memory. The WLDR agent is a bespoke PowerShell script that receives its C2 address through the PowerShell loader injected global variable at the time of execution. The WLDR agent employs capabilities including encrypted HTTP beaconing, comprehensive host reconnaissance, a robust reconnection protocol, and a modular task execution engine to further execute the malicious PowerShell scripts as directed by the threat actor from the WLDR C2 server.&#xA0;</p><h2 id="initial-vector">Initial&#xA0;vector&#xA0;</h2><p>The threat actor&#xA0;gains&#xA0;initial access to the victim machine&#xA0;potentially&#xA0;through a&#xA0;ClickFix&#xA0;social engineering technique that entices the user to execute a command, which&#xA0;then&#xA0;stealthily downloads and executes a remotely hosted weaponized HTA file. The HTA file runs an embedded VBScript that drops a Windows batch file into the user profile&#x2019;s application temporary folder, which&#xA0;contains&#xA0;instructions to first download and implant a&#xA0;trojanized&#xA0;installer from the attacker-controlled staging domain onto the victim machine.&#xA0;</p><p>Once the&#xA0;trojanized&#xA0;installer is executed, the batch file sends a notification beacon to an attacker-controlled Telegram bot,&#xA0;&#x201C;8384531459&#x201D;,&#xA0;to confirm successful execution to the threat actor. At the same time, the VBScript&#xA0;establishes&#xA0;persistence under&#xA0;&#x201C;HKCU\Software\Microsoft\Windows\CurrentVersion\Run&#x201D;&#xA0;with the generic value&#xA0;&#x201C;MyApp&#x201D;,&#xA0;pointing back to&#xA0;&#x201C;mshta.exe&#x201D;&#xA0;to execute the remotely hosted weaponized HTA file every time the victim logs in to the machine. Talos&#xA0;identified&#xA0;a Russian-language developer comment left in the VBScript (&#x201C;&#x414;&#x43E;&#x431;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435;&#xA0;&#x43A;&#x43E;&#x43C;&#x430;&#x43D;&#x434;&#x44B;&#xA0;&#x432;&#xA0;&#x430;&#x432;&#x442;&#x43E;&#x437;&#x430;&#x43F;&#x443;&#x441;&#x43A;&#xA0;&#x434;&#x43B;&#x44F;&#xA0;&#x442;&#x435;&#x43A;&#x443;&#x449;&#x435;&#x433;&#x43E;&#xA0;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x435;&#x43B;&#x44F;&#x201D;),&#xA0;indicating&#xA0;that a Russian-speaking actor is conducting this campaign.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/HTA.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="2000" height="2133" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/HTA.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/HTA.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/HTA.png 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/HTA.png 2048w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure&#xA0;6.&#xA0;Weaponized HTA file that downloads and executes&#xA0;trojanized&#xA0;installers.&#xA0;</span></figcaption></figure><h2 id="python-loader-packaged-into-trojanized-installers">Python&#xA0;loader packaged into&#xA0;trojanized&#xA0;installers&#xA0;</h2><p>Talos has&#xA0;observed&#xA0;that the threat actor in this campaign has weaponized software installers by&#xA0;utilizing&#xA0;the&#xA0;Nullsoft&#xA0;Scriptable Install System (NSIS). They have packaged the Python runtime executable&#xA0;&#x201C;pythonw.exe&#x201D;&#xA0;along with a compiled Python loader, which is disguised as a license file named&#xA0;&#x201C;LICENSE.txt&#x201D;.&#xA0;The threat actor has&#xA0;modified&#xA0;the&#xA0;NSI&#xA0;script file of the installer to include instructions for executing&#xA0;the compiled Python loader using the Python runtime executable.&#xA0;&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/NSI-1.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="1750" height="1142" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/NSI-1.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/NSI-1.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/NSI-1.png 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/NSI-1.png 1750w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure&#xA0;7.&#xA0;Install section of the&#xA0;NSI&#xA0;script of a sample&#xA0;trojanized&#xA0;installer.&#xA0;</span></figcaption></figure><p>The compiled Python loader is a&#xA0;relatively large&#xA0;file obfuscated with&#xA0;numerous&#xA0;junk functions that perform random arithmetic operations and print randomly generated strings to the standard output. The actual execution logic is confined to six lines in the loader program, implementing XOR decryption using the XOR key 198 (0xC6) to decrypt the encrypted embedded payload of&#xA0;Starland RAT&#xA0;and execute it&#xA0;in the victim machine&apos;s memory.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Py-loader.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="2000" height="1586" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/Py-loader.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/Py-loader.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/Py-loader.png 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Py-loader.png 2048w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure&#xA0;8.&#xA0;Snippet of the decompiled&#xA0;Python loader program.</span></figcaption></figure><h2 id="starland-rat-a-python-based-rat">Starland&#xA0;RAT, a&#xA0;Python-based&#xA0;RAT&#xA0;</h2><p>Starland is a Python-based&#xA0;remote&#xA0;access&#xA0;tool (RAT) with the capability to steal cryptocurrency. During its&#xA0;initial&#xA0;execution phase, the RAT resolves and declares all required Windows API function signatures through Python&#x2019;s&#xA0;ctypes&#xA0;interfaces. It directly loads&#xA0;&#x201C;kernel32.dll&#x201D;&#xA0;using&#xA0;WinDLL&#xA0;and explicitly defines the argument types and return types for every Win32 call used later in execution, including VirtualAllocEx,&#xA0;WriteProcessMemory,&#xA0;CreateRemoteThread,&#xA0;VirtualProtectEx,&#xA0;CreateProcessA,&#xA0;QueueUserAPC, and&#xA0;ResumeThread. Custom&#xA0;ctypes&#xA0;Structure subclasses are declared for SECURITY_ATTRIBUTES, STARTUPINFO, and PROCESS_INFORMATION, mirroring the definitions in the Windows SDK. This API mapping mechanism ensures that all injection and process manipulation calls later in execution are ready without further need for Windows API imports or dynamic resolution.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/py-RAT-1.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="2000" height="3227" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/py-RAT-1.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/py-RAT-1.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/py-RAT-1.png 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/py-RAT-1.png 2048w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure&#xA0;9.&#xA0;Snippet of the Starland RAT function for resolving and declaring the Windows API&#xA0;functions.&#xA0;</span></figcaption></figure><p>Before any malicious logic executes, the RAT conducts&#xA0;check&#xA0;for anti-analysis environments. First, it compares the logged-on username of the victim machine against a hardcoded list of usernames, which includes known sandbox service accounts and aliases, including&#xA0;WDAGUtilityAccount. Next, the RAT verifies the victim&apos;s computer name against&#xA0;a&#xA0;list of hostnames from recognized sandbox environments, such as Cuckoo,&#xA0;Any.Run, Joe Sandbox, and Hybrid Analysis. If either check matches, the RAT&apos;s execution&#xA0;terminates&#xA0;immediately. Additionally, the RAT examines the Downloads folder for a&#xA0;Zone.Identifier&#xA0;alternate data stream on the&#xA0;trojanized&#xA0;installer file, confirming that the file was obtained via a browser download rather than being uploaded or copied directly.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/py-RAT-2.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="2000" height="1195" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/py-RAT-2.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/py-RAT-2.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/py-RAT-2.png 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/py-RAT-2.png 2048w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure&#xA0;10.&#xA0;Snippet of Starland RAT showing the hardcoded list of usernames and computer names for&#xA0;detection of&#xA0;evasion checks.&#xA0;</span></figcaption></figure><p>The RAT&#xA0;establishes&#xA0;persistence before any network communication with the C2 takes place. The primary mechanism involves creating a scheduled task using the PowerShell <code>New-ScheduledTask</code> command, with a randomized name following the pattern <code>PythonLauncher-{3 random characters}</code>. When executed with administrator privileges, the trigger is set to&#xA0;AtLogOn&#xA0;with&#xA0;RunLevel&#xA0;Highest, ensuring the elevated re-execution of the RAT at every user logon. Additionally, a secondary Startup folder LNK shortcut is created via the&#xA0;WScript.Shell&#xA0;COM object, placed in the user&apos;s Startup directory, targeting&#xA0;&#x201C;pythonw.exe&#x201D;&#xA0;with <code>LICENSE.txt</code>&#xA0;as its argument. If the RAT is not already running with elevated privileges, it also&#xA0;attempts&#xA0;UAC elevation via&#xA0;ShellExecuteW&#xA0;with the <code>runas</code>verb, aiming to upgrade the scheduled task to the higher-privilege logon before&#xA0;proceeding.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/py-RAT-3.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="2000" height="2365" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/py-RAT-3.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/py-RAT-3.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/py-RAT-3.png 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/py-RAT-3.png 2048w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure&#xA0;11.&#xA0;Snippet of Starland RAT with the instructions for&#xA0;establishing&#xA0;persistence.&#xA0;</span></figcaption></figure><p>It performs system reconnaissance, assembling the victim profile that includes the system hardware-bound unique identifier (HWID), total RAM size of the victim machine, and installed antivirus by executing the following commands:&#xA0;</p>
<!--kg-card-begin: html-->
<pre>
Get-CimInstance -Class Win32_ComputerSystemProduct.UUID&#xA0;&#xA0;
wmic memorychip get Capacity&#xA0;&#xA0;&#xA0;
Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntiVirusProduct
</pre>
<!--kg-card-end: html-->
<p>The RAT also conducts Active Directory reconnaissance via the PowerShell command <code>Get-WmiObject Win32_ComputerSystem.Domain</code>. If the victim is identified as a member of Active Directory, the RAT executes the following commands to collect information about domain structure, domain controllers, and the victim&#x2019;s domain privileges:&#xA0;</p>
<!--kg-card-begin: html-->
<pre>
whoami &amp;&amp; systeminfo &amp;&amp; net user {USERNAME} /dom &amp;&amp; nltest /dclist
</pre>
<!--kg-card-end: html-->
<p>For workgroup-only hosts, it executes the <code>whoami /all</code> command. The reconnaissance data collected are staged by the RAT for inclusion during the victim machine registration to the primary C2 domain hardcoded in the RAT program. It also captures a screenshot of the victim machine&apos;s desktop, saves it as a PNG in the RAT&#x2019;s working directory, generates a&#xA0;Base64-encoded string for the PNG file in memory, stages it alongside the reconnaissance data, and deletes the PNG file from the disk.&#xA0;</p><p>Additionally, it gathers the victim&#x2019;s cryptocurrency assets information by&#xA0;enumerating&#xA0;the desktop&#xA0;cryptocurrency&#xA0;wallets and browser extension wallets, checking for the presence of over 40 cryptocurrency&#xA0;wallets.&#xA0;The collected data&#xA0;is also staged alongside the reconnaissance data and the&#xA0;Base64-encoded screenshot (PNG)&#xA0;data. The&#xA0;RAT consolidates all collected data into a single JSON file, XOR encrypts it with the 5-byte key &#x201C;helo1&#x201D;,&#xA0;Base64-encodes it, and sends it to the primary C2 through&#xA0;an <code>HTTP POST</code> request using the HTTP user-Agent:</p><p><code>Mozilla/5.0 (Windows NT 10.0; Win64; x64)&#xA0;AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36</code>.&#xA0;&#xA0;</p><p>If the primary C2 registration fails, the RAT enables a blockchain-anchored fallback mechanism. An <code>eth_call</code> is triggered via JSON-RPC to the public Polygon RPC endpoint&#xA0;&#x201C;polygon-rpc[.]com&#x201D;,&#xA0;targeting the smart contract &#x201C;0x6ae382ed2154cc84c6672e4e908cd2c69c1b35ba&#x201D; and function selector &#x201C;0xc659f3b8&#x201D; for the latest block. The encrypted hexadecimal string that the RAT receives from the smart contract is XOR-decrypted with the key &#x201C;$m7*rYpry3&#x201D; to recover a fallback domain to which the RAT sends the victim machine registration request along with the reconnaissance and screenshot data.&#xA0;</p><p>Before transmitting the reconnaissance information to the C2 for the victim&apos;s machine registration, the RAT sends a notification message to the attacker-controlled Telegram bot using hardcoded credentials. The message includes the victim&apos;s public IP address sourced from&#xA0;&#x201C;api64.ipify[.]org&#x201D;,&#xA0;the build name, region locale, computer name presented as a&#xA0;&#x201C;Crew ID&#x201D;&#xA0;field, OS platform and release, processor string, and the hardcoded label&#xA0;&#xA0;<br>&quot;Windows Defender&#x201D;&#xA0;as the protection application indicator. If any Chrome cryptocurrency&#xA0;wallet extensions or desktop cold wallet applications were detected during the reconnaissance phase, they were also appended to the message of the Telegram bot, providing the threat actor with visibility into the victim profile and cryptocurrency&#xA0;assets before the actual registration of the victim machine to the C2.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/py-RAT-4.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="2000" height="1311" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/py-RAT-4.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/py-RAT-4.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/py-RAT-4.png 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/py-RAT-4.png 2048w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure&#xA0;12.&#xA0;Starland RAT&#x2019;s&#xA0;Telegram bot message beaconing function.</span></figcaption></figure><p>After the RAT registers the&#xA0;compromised&#xA0;machine with the C2, it sends a <code>GET</code> request to the C2 server every 50&#xA0;&#x2013;&#xA0;60 seconds. It&#xA0;contains&#xA0;minimal JSON content with two randomly named junk fields and the bot&apos;s unique identifier, encoded using the same XOR key &#x201C;helo1&#x201D; and then&#xA0;Base64&#xA0;encoded. The C2 server responds with one of the&#xA0;four&#xA0;commands supported by the RAT:&#xA0;</p>
<!--kg-card-begin: html-->
<table class="Table Ltr TableWordWrap SCXW136684052 BCX4" border="1" dir="ltr" data-tablestyle="MsoTableGrid" data-tablelook="1696" aria-rowcount="6" style="font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid; -webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; table-layout: fixed; width: 1px; border-collapse: collapse; empty-cells: show; position: relative; overflow: visible; caret-color: rgba(0, 0, 0, 0.847); color: rgba(0, 0, 0, 0.847); font-family: &quot;Segoe UI&quot;, &quot;Segoe UI Web&quot;, Arial, Verdana, sans-serif; font-size: 12px; background: none; border-spacing: 0px;"><tbody class="SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text;"><tr class="TableRow SCXW136684052 BCX4" role="row" aria-rowindex="1" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 19px;"><td class="FirstRow FirstCol SCXW136684052 BCX4" role="rowheader" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 168px;"><div class="TableCellContent SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW136684052 BCX4" paraid="530029045" paraeid="{12d0fb38-38de-4e11-a7da-dc9dced0814c}{242}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Commands</span></span><span class="EOP SCXW136684052 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="FirstRow LastCol SCXW136684052 BCX4" role="columnheader" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 456px;"><div class="TableCellContent SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW136684052 BCX4" paraid="1016860895" paraeid="{12d0fb38-38de-4e11-a7da-dc9dced0814c}{245}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Action</span></span><span class="EOP SCXW136684052 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW136684052 BCX4" role="row" aria-rowindex="2" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 19px;"><td class="FirstCol SCXW136684052 BCX4" role="rowheader" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 168px;"><div class="TableCellContent SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW136684052 BCX4" paraid="1736658691" paraeid="{12d0fb38-38de-4e11-a7da-dc9dced0814c}{249}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">shellexecute</span></span><span class="EOP SCXW136684052 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW136684052 BCX4" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 456px;"><div class="TableCellContent SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW136684052 BCX4" paraid="394825344" paraeid="{12d0fb38-38de-4e11-a7da-dc9dced0814c}{252}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Runs an arbitrary shell string via &#x201C;</span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">cmd</span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;"><span class="Apple-converted-space">&#xA0;</span>/c&#x201D; or PowerShell and returns the output to the<span class="Apple-converted-space">&#xA0;</span></span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">C2 server through<span class="Apple-converted-space">&#xA0;</span></span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">HTTP POST<span class="Apple-converted-space">&#xA0;</span></span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">request.</span></span><span class="EOP SCXW136684052 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW136684052 BCX4" role="row" aria-rowindex="3" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 19px;"><td class="FirstCol SCXW136684052 BCX4" role="rowheader" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 168px;"><div class="TableCellContent SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW136684052 BCX4" paraid="780020929" paraeid="{4d3fc864-b4e4-4c5c-8724-39358c990924}{2}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">x32</span></span><span class="EOP SCXW136684052 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW136684052 BCX4" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 456px;"><div class="TableCellContent SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW136684052 BCX4" paraid="947318055" paraeid="{4d3fc864-b4e4-4c5c-8724-39358c990924}{5}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Receives a 32-bit shellcode<span class="Apple-converted-space">&#xA0;</span></span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">URL<span class="Apple-converted-space">&#xA0;</span></span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">and executes<span class="Apple-converted-space">&#xA0;</span></span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">the<span class="Apple-converted-space">&#xA0;</span></span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">s</span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">hellcode that is<span class="Apple-converted-space">&#xA0;</span></span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">staged</span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;"><span class="Apple-converted-space">&#xA0;</span></span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">using</span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;"><span class="Apple-converted-space">&#xA0;</span>the<span class="Apple-converted-space">&#xA0;</span></span></span><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; color: windowtext; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">asynchronous procedure<span class="Apple-converted-space">&#xA0;</span></span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">call</span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;"><span class="Apple-converted-space">&#xA0;</span>(</span></span><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">APC), process</span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;"><span class="Apple-converted-space">&#xA0;</span>injection technique.</span></span><span class="EOP SCXW136684052 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW136684052 BCX4" role="row" aria-rowindex="4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 19px;"><td class="FirstCol SCXW136684052 BCX4" role="rowheader" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 168px;"><div class="TableCellContent SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW136684052 BCX4" paraid="691034436" paraeid="{4d3fc864-b4e4-4c5c-8724-39358c990924}{9}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">x64</span></span><span class="EOP SCXW136684052 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW136684052 BCX4" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 456px;"><div class="TableCellContent SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW136684052 BCX4" paraid="1412581193" paraeid="{4d3fc864-b4e4-4c5c-8724-39358c990924}{12}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Receives a 64-bit shellcode URL and executes the<span class="Apple-converted-space">&#xA0;</span></span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">s</span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">hellcode that is staged using the<span class="Apple-converted-space">&#xA0;</span></span></span><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; color: windowtext; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">asynchronous procedure<span class="Apple-converted-space">&#xA0;</span></span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">call</span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;"><span class="Apple-converted-space">&#xA0;</span>(</span></span><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">APC), process injection technique.</span></span><span class="EOP SCXW136684052 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW136684052 BCX4" role="row" aria-rowindex="5" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 19px;"><td class="FirstCol SCXW136684052 BCX4" role="rowheader" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 168px;"><div class="TableCellContent SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW136684052 BCX4" paraid="1211175767" paraeid="{4d3fc864-b4e4-4c5c-8724-39358c990924}{16}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">download&#xA0;</span></span><span class="EOP SCXW136684052 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW136684052 BCX4" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 456px;"><div class="TableCellContent SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW136684052 BCX4" paraid="1341267601" paraeid="{4d3fc864-b4e4-4c5c-8724-39358c990924}{19}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Downloads the<span class="Apple-converted-space">&#xA0;</span></span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">payload file to the<span class="Apple-converted-space">&#xA0;</span></span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">&#x201C;</span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">%TEMP%</span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">&#x201D;</span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;"><span class="Apple-converted-space">&#xA0;</span>folder and executes it by file extension, supporting EXE, MSI</span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">, DLL</span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">,</span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;"><span class="Apple-converted-space">&#xA0;</span>and ZIP formats with<span class="Apple-converted-space">&#xA0;</span></span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">appropriate<span class="Apple-converted-space">&#xA0;</span></span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">execution</span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;"><span class="Apple-converted-space">&#xA0;</span>methods.</span></span><span class="EOP SCXW136684052 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW136684052 BCX4" role="row" aria-rowindex="6" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 19px;"><td class="FirstCol LastRow SCXW136684052 BCX4" role="rowheader" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 168px;"><div class="TableCellContent SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW136684052 BCX4" paraid="156675665" paraeid="{4d3fc864-b4e4-4c5c-8724-39358c990924}{23}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">HTTP<span class="Apple-converted-space">&#xA0;</span></span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">403</span><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;"><span class="Apple-converted-space">&#xA0;</span>response</span></span><span class="EOP SCXW136684052 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol LastRow SCXW136684052 BCX4" data-celllook="0" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: top; position: relative; background-color: transparent; background-clip: padding-box; border: 1px solid rgb(0, 0, 0); width: 456px;"><div class="TableCellContent SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px 7px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW136684052 BCX4" paraid="1393364865" paraeid="{4d3fc864-b4e4-4c5c-8724-39358c990924}{26}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW136684052 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Triggers the self-deletion of the RAT file and exits its process, functioning as a kill switch.&#xA0;</span></span><span class="EOP SCXW136684052 BCX4" data-ccp-props="{}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSCustomFont, Aptos_MSFontService, sans-serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/py-RAT-5.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="2000" height="1936" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/py-RAT-5.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/py-RAT-5.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/py-RAT-5.png 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/py-RAT-5.png 2048w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure&#xA0;13.&#xA0;Starland RAT command processing function.&#xA0;</span></figcaption></figure><h2 id="windows-shell-command-deploys-bespoke-wldr-agent-c2-implant">Windows&#xA0;shell command deploys&#xA0;bespoke&#xA0;WLDR&#xA0;agent C2&#xA0;implant&#xA0;</h2><p>In the current campaign investigation, Talos discovered that the threat actor executed a&#xA0;<code>curl</code> command to download and execute&#xA0;additional&#xA0;PowerShell script payloads of the WLDR C2 framework from another C2.&#xA0;&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/c2-command.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="2000" height="451" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/c2-command.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/c2-command.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/c2-command.png 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/c2-command.png 2048w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure 14.&#xA0;curl&#xA0;command to download the WLDR stager.</span></figcaption></figure><h2 id="wldr-stager">WLDR stager&#xA0;</h2><p>The WLDR stager PowerShell script&#xA0;represents&#xA0;the&#xA0;initial&#xA0;stage, where it&#xA0;establishes&#xA0;a loop counter and two&#xA0;boolean&#xA0;flags for execution states. Each state creates a runtime alias for PowerShell command execution, resolving .NET&#xA0;Base64 and byte conversion types through an obfuscated string construction mechanism. It also defines an inline decryption routine that XOR decrypts the next stage, which is the embedded encrypted WLDR downloader PowerShell script, using a dynamically computed XOR key.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Stage-1-ps.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="2000" height="2951" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/Stage-1-ps.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/Stage-1-ps.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/Stage-1-ps.png 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Stage-1-ps.png 2048w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure 15.&#xA0;Snippet of the WLDR PowerShell stager script.&#xA0;</span></figcaption></figure><h2 id="wldr-downloader">WLDR downloader&#xA0;&#xA0;</h2><p>WLDR downloader is a compact HWID-bound loader script. Upon execution, it derives a hardware identifier from the victim&#x2019;s C: drive volume serial number, converts it from hexadecimal to a decimal number, and appends it to two hardcoded C2 URLs for victim-specific payload delivery and a persistent agent task channel. It then issues an&#xA0;<code>HTTP GET</code>&#xA0;request to the C2, and the C2 server only responds to requests whose HWID matches a pre-registered value. The C2 server response is an encrypted JSON envelope&#xA0;containing&#xA0;fields with a&#xA0;Base64-encoded salt, initialization vector, encrypted data, and authentication tag.&#xA0;</p><p>The WLDR loader processes the JSON response by decrypting the envelope through an inline decryption routine using a derived 64-byte key from a hardcoded plaintext password &#x201C;odg5t8mvssvh&#x201D; and the salt received from the C2 server in the JSON response. This is followed by the decryption of the encrypted data, which is the next stage of the WLDR agent PowerShell C2 memory implant. Before executing the WLDR agent, it writes the C2 URL and the plaintext password into the global PowerShell scope, making both available for the WLDR agent as its C2 address and session encryption key for all&#xA0;subsequent&#xA0;communication with the C2.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Stage-2-PS.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="1422" height="982" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/Stage-2-PS.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/Stage-2-PS.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Stage-2-PS.png 1422w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure 16.&#xA0;Snippet of the WLDR PowerShell downloader.</span></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/JSON.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="1750" height="502" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/JSON.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/JSON.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/JSON.png 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/JSON.png 1750w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure 17.&#xA0;Sample JSON response from the C2 server.</span></figcaption></figure><h2 id="bespoke-wldr-c2-agent-implant">Bespoke&#xA0;WLDR&#xA0;C2 agent&#xA0;implant&#xA0;</h2><p>The WLDR agent is a fully featured PowerShell remote access client that&#xA0;operates&#xA0;entirely in memory. It implements encrypted C2 communications, concurrent task execution through a managed&#xA0;Runspace&#xA0;engine, and a module delivery framework that provides the threat actor with interactive remote PowerShell execution capabilities on the victim&apos;s machine.&#xA0;</p><p>Upon execution, the agent initializes the server&apos;s URL to a development placeholder and&#xA0;immediately&#xA0;checks for a globally scoped URL and session encryption password that were set by the WLDR loader script. If found, it overwrites the placeholder with the C2 URL and inherits the session encryption password, while also configuring other operational parameters, including polling interval, HTTP timeout, retry counts for the C2 reconnect cycle, and the number of threads for the&#xA0;Runspace&#xA0;pool.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/WLDR_backdoor-1.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="1750" height="1022" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/WLDR_backdoor-1.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/WLDR_backdoor-1.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/WLDR_backdoor-1.png 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/WLDR_backdoor-1.png 1750w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure 18.&#xA0;Snippet of the WLDR agent with the configuration parameters.</span></figcaption></figure><p>Before&#xA0;initiating&#xA0;the C2 connectivity, it implements a mutex &#x201C;f2j398fj239d8j23dkkskskkkkkkkkk&#x201D; to prevent duplicate instances and performs a dependency check on the inherited session encryption password. If the password is not found, the agent exits its execution. The network communication is encrypted using AES-256-CBC with HMAC-SHA256 in an&#xA0;encryption,&#xA0;then Message Authentication Code (MAC) construction, with session keys derived through PBKDF2-SHA256 over a randomly generated salt at 5,000 iterations. The protocol version tag WSv1 is bound to every MAC computation, with a new random&#xA0;initialization vector (IV)&#xA0;generated for each message.&#xA0;</p><p>The agent performs reconnaissance via WMI queries, gathering information on antivirus products, network adapter configurations,&#xA0;OS&#xA0;version and build, domain membership, CPU, RAM, administrative privilege status, and UAC policy. A hardware identifier is primarily derived from the C: drive volume serial number; if that fails, it queries the&#xA0;machine&apos;s&#xA0;registry for the GUID or generates a checksum of the host&#xA0;name, which is appended to all C2 URLs. The&#xA0;initial&#xA0;connection to the C2 is&#xA0;established&#xA0;through an&#xA0;<code>HTTP POST</code>&#xA0;that includes the victim machine profile, the infection identifier, protocol version 2.0.0, and the cryptographic session parameters, with a connection retry timing set to 30 seconds. All&#xA0;subsequent&#xA0;traffic is sent to C2 over HTTPS, with headers designed to mimic a Chrome browser session in version 124.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/backdoor-2.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="1750" height="1422" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/backdoor-2.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/backdoor-2.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/backdoor-2.png 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/backdoor-2.png 1750w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure 19.&#xA0;Snippet of WLDR agent C2 handshake function.</span></figcaption></figure><p>After&#xA0;establishing&#xA0;the initial connection with the C2, the agent polls the C2 server every 10 seconds. The response from the C2 server can include either commands or tasks, with the only hardcoded command in the agent&#xA0;being&#xA0;a kill instruction that triggers instance termination, while tasks are queued for execution.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/backdoor-3.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="1750" height="2582" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/backdoor-3.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/backdoor-3.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/backdoor-3.png 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/backdoor-3.png 1750w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure&#xA0;20.&#xA0;Snippet of WLDR agent&#x2019;s C2 polling function.&#xA0;</span></figcaption></figure><p>During our research, we&#xA0;observed&#xA0;that the&#xA0;initial&#xA0;response from the C2 was the idle polling interval response, which included empty fields in both the &#x201C;commands&#x201D; and &#x201C;tasks&#x201D; arrays.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Polling_response.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="1750" height="742" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/Polling_response.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/Polling_response.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/Polling_response.png 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Polling_response.png 1750w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure&#xA0;21.&#xA0;Initial WLDR agent polling response from the C2. </span></figcaption></figure><p>Further analysis of the&#xA0;agent&#xA0;program&#xA0;disclosed&#xA0;that the C2 responses&#xA0;to the polling will&#xA0;contain&#xA0;encrypted PowerShell&#xA0;commands or&#xA0;scripts,&#xA0;which&#xA0;are decrypted using the same hardcoded password&#xA0;and executed&#xA0;through one of the two runtime engines&#xA0;defined in&#xA0;the backdoor&#xA0;program.&#xA0;&#xA0;</p><p>The primary&#xA0;agent execution&#xA0;engine is a PowerShell&#xA0;RunspacePool&#xA0;supporting&#xA0;up to&#xA0;10 concurrent threads.&#xA0;Each PowerShell script payload delivered by the C2 is wrapped with&#xA0;details of execution context and parameters as in scope variables along with event handlers on&#xA0;the script&#x2019;s execution&#xA0;result of&#xA0;output,&#xA0;error,and warnings.&#xA0;These event handlers registered on the output, error,&#xA0;and warning streams are triggered synchronously&#xA0;as the script execution output is produced, packaging results into stream messages and forwards them to the C2 in real time&#xA0;without waiting for the script execution completion.&#xA0;&#xA0;</p><p>This message streaming capability makes the&#xA0;WLDR agent&#x2019;s&#xA0;Runspace&#xA0;engine&#xA0;favorable&#xA0;for the interactive operations such as&#xA0;continuous&#xA0;monitoring where the command output reaches the threat actor incrementally,&#xA0;rather&#xA0;than after the completion of the script execution.&#xA0;&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/backdoor-5.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="2000" height="2303" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/backdoor-5.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/backdoor-5.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/backdoor-5.png 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w2400/2026/07/backdoor-5.png 2400w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure&#xA0;22.&#xA0;WLDR agent function of handling the&#xA0;Runspace&#xA0;engine.&#xA0;</span></figcaption></figure><p>If the&#xA0;Runspace&#xA0;engine&#xA0;fails to&#xA0;initialize the payload, PowerShell script execution defaults to standard PowerShell background jobs. It injects parameters and launches the script as a background job; however, unlike the&#xA0;Runspace&#xA0;path, it collects output only after the job completes, making it suitable only for short-lived batch tasks.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/backdoor-6.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="2000" height="2435" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/backdoor-6.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/backdoor-6.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/backdoor-6.png 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/backdoor-6.png 2154w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure&#xA0;23.&#xA0;WLDR agent PowerShell job execution handlers.&#xA0;</span></figcaption></figure><h2 id="other-payloads-of-starland-rat-campaign">Other payloads of Starland RAT campaign&#xA0;</h2><p>Talos has discovered that the threat actor&#xA0;possesses&#xA0;additional&#xA0;malware, including&#xA0;CastleStealer&#xA0;and&#xA0;Remcos&#xA0;RAT, which can be deployed as payloads to the victim&apos;s machine via the Starland RAT. To deliver these payloads, the threat actor&#xA0;utilizes&#xA0;a custom shellcode loader for both x64 and x32 machines, encapsulating the embedded encrypted binaries of the payloads.&#xA0;</p><p>The shellcode loader resolves all required Windows APIs entirely at runtime by&#xA0;enumerating&#xA0;the list of loaded modules in the&#xA0;OS&#xA0;memory, iterating through each module&apos;s export directory, and comparing a hash of each function name against stored target values. The shellcode neutralizes both the Antimalware Scan Interface (AMSI) and Event Tracing for Windows (ETW) through two sequential bypass mechanisms. The primary technique resolves the target functions <code>AmsiScanBuffer</code>&#xA0;in&#xA0;&#x201C;amsi.dll&#x201D;&#xA0;and&#xA0;<code>EtwEventWrite</code>&#xA0;in&#xA0;&#x201C;ntdll.dll&#x201D;&#xA0;using runtime hash-based API resolution, then overwrites their first bytes in memory with a patch that forces AMSI to always return a clean scan result and the ETW write function to return immediately without writing the output, effectively neutralizing both interfaces. If the primary patching technique fails, the shellcode executes a fallback mechanism where it calls&#xA0;VirtualProtect&#xA0;to temporarily change the target function&apos;s memory page protection value to read-write-execute and writes the same patch bytes directly, then restores the original page protection.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Shellcode-1.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="2000" height="1261" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/Shellcode-1.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/Shellcode-1.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/Shellcode-1.png 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Shellcode-1.png 2116w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure 24.&#xA0;Shellcode snippet of instructions for AMSI bypass.&#xA0;</span></figcaption></figure><p>Then, it decrypts the embedded encrypted payload blob and decompresses the decrypted data using LZX decompression into a newly&#xA0;allocated&#xA0;memory region. The payload is&#xA0;subsequently&#xA0;dispatched either by the reflective PE injection technique or by .NET CLR loading through the&#xA0;ICorRuntimeHost&#xA0;COM interface for .NET binaries, or through the PowerShell&#xA0;Runspace&#xA0;for PowerShell scripts.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Shellcode-2.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="801" height="1220" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/Shellcode-2.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Shellcode-2.png 801w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure 25.&#xA0;Shellcode snippet of decryption function and decrypted payload in memory.&#xA0;</span></figcaption></figure><p>Talos discovered that the threat actor&#xA0;can deliver&#xA0;CastleStealer&#xA0;implant&#xA0;through the x64 shellcode and the&#xA0;Remcos&#xA0;RAT through the x32 shellcode variant.&#xA0;&#xA0;</p><p>CastleStealer&#xA0;is a .NET-based infostealer and credential harvesting implant designed to systematically extract sensitive data from compromised Windows hosts. It incorporates several anti-analysis measures,&#xA0;including a Russian locale exclusion check and a hardcoded build expiry timestamp, ensuring it executes only against genuine targets within a defined operational window. Its credential theft surface is broad, targeting the full Chromium browser family and Firefox through direct SQLite database access, with decryption support for both legacy DPAPI-protected credentials and the AES-GCM application&#xA0;bound encryption scheme. Beyond browser data, it&#xA0;enumerates&#xA0;crypto wallet browser extensions, Discord and Telegram session files, Steam account credentials, and targeted filesystem paths, transmitting all collected material over a TCP socket to&#xA0;the attacker-controlled infrastructure.&#xA0;CastleStealer&#x2019;s&#xA0;secondary payload delivery capability allows the&#xA0;actor&#xA0;to&#xA0;implant further payloads&#xA0;through process injection&#xA0;technique&#xA0;or PowerShell&#xA0;script&#xA0;execution.&#xA0;&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/data-src-image-dfd24394-758c-4401-9cd5-1443c75d2239.png" class="kg-image" alt="UAT-11795 deploys novel Starland RAT and bespoke WLDR C2 implant in financially motivated campaign" loading="lazy" width="624" height="407" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/data-src-image-dfd24394-758c-4401-9cd5-1443c75d2239.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/data-src-image-dfd24394-758c-4401-9cd5-1443c75d2239.png 624w"><figcaption><span style="white-space: pre-wrap;">Figure 26.&#xA0;Snippet of&#xA0;CastleStealer&#xA0;malware&#xA0;function.&#xA0;</span></figcaption></figure><p>Remcos&#xA0;RAT (Remote Control and Surveillance) is a&#xA0;commercial&#xA0;remote access tool originally&#xA0;sold&#xA0;as a legitimate remote administration tool. However, it has been&#xA0;extensively abused by&#xA0;a wide range of&#xA0;threat actors&#xA0;since its emergence in 2016. It provides operators with&#xA0;comprehensive post-exploitation capabilitiesincluding real-time keylogging, screen and webcam capture, audio recording, file management, shell command execution, and clipboard&#xA0;monitoring&#xA0;all&#xA0;communicated over an encrypted channel to a configurable C2 server.&#xA0;&#xA0;</p><h2 id="coverage">Coverage&#xA0;</h2><p>The following ClamAV signature detects and blocks this threat:&#xA0;</p><p>Txt.Downloader.Agent-10060312-0<br>Html.Downloader.Agent-10060313-0<br>Html.Downloader.Agent-10060314-0<br>Py.Loader.Agent-10060315-0<br>Py.Loader.Agent-10060316-0<br>Ps1.Trojan.Agent-10060317-0<br>Ps1.Trojan.Agent-10060318-0<br>Ps1.Trojan.WLDRAgent-10060319-0<br>Ps1.Downloader.Agent-10060320-0<br>Win.Trojan.CastleStealer-10060341-0<br>Win.Trojan.Starland_Installer-10060342-0<br>Win.Malware.Starland-10060343-0<br>Win.Malware.Remka-10060344-0</p><p>The following Snort Rules&#xA0;Snort 2 and Snort 3&#xA0;(SIDs)&#xA0;to&#xA0;detect and block this threat:&#xA0;66787 &#x2013; 66790 and 301580&#xA0;&#xA0;</p><h2 id="iocs">IOCs</h2><p>The IOCs for this threat are also available at our GitHub repository&#xA0;<a href="https://github.com/Cisco-Talos/IOCs/blob/main/2026/07/new-starland-rat-and-WLDR-implant-campaign.txt" rel="noreferrer noopener"><u>here</u></a>.&#xA0;</p>]]></content:encoded></item><item><title><![CDATA[Microsoft Patch Tuesday for July 2026 — Snort rules and prominent vulnerabilities]]></title><description><![CDATA[Microsoft has released its monthly security update for July 2026, which includes 622 vulnerabilities affecting a range of products, including 57 that Microsoft marked as "critical."]]></description><link>https://blog.talosintelligence.com/microsoft-patch-tuesday-july-2026/</link><guid isPermaLink="false">6a5699a03080bb0001373651</guid><category><![CDATA[Patch Tuesday]]></category><dc:creator><![CDATA[Cisco Talos]]></dc:creator><pubDate>Tue, 14 Jul 2026 20:27:33 GMT</pubDate><media:content url="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/patch_tuesday.png" medium="image"/><content:encoded><![CDATA[<img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/patch_tuesday.png" alt="Microsoft Patch Tuesday for July 2026 &#x2014; Snort rules and prominent vulnerabilities"><p>Microsoft has released its monthly security update for July 2026, which includes 622 vulnerabilities affecting a range of products, including 57 that Microsoft marked as &quot;critical.&quot;</p><p>Microsoft notes that two of the vulnerabilities disclosed this month have been exploited in the wild.</p><p><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56155">CVE-2026-56155</a> is an important-severity elevation of privilege vulnerability in Active Directory Federation Services (AD FS) caused by insufficient granularity of access control. An authorized attacker could use it to elevate privileges locally.</p><p><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56164">CVE-2026-56164</a> is a moderate-severity vulnerability in Microsoft SharePoint Server caused by missing authentication for a critical function. An unauthorized attacker could exploit it to perform spoofing over a network.</p><p>The 57 &quot;critical&quot; entries break down by vulnerability type as follows: 48 remote code execution (RCE), seven elevation of privilege (EoP), 1 spoofing and 1 security feature bypass vulnerability.</p><p>The 48 critical RCE vulnerabilities affect a range of Microsoft Windows services and applications, including Windows Media and Media Foundation, the Windows DHCP client and DHCP Server service, Microsoft Office, Word, Excel and PowerPoint, Windows GDI and GDI+, the DirectX Graphics Kernel, Microsoft SharePoint, Microsoft SQL Server, the Windows Reliable Multicast Transport Driver (RMCAST), Windows TCP/IP, the Windows Server Network driver, the Windows Print Spooler, the Windows Secure Socket Tunneling Protocol (SSTP), Windows Active Directory Domain Services, Microsoft Defender, Microsoft Copilot, Microsoft Message Queuing (MSMQ), the Remote Desktop Client, Microsoft Dynamics NAV and Microsoft Dynamics 365 Business Central (on-premises), and the Minecraft Bedrock Dedicated Server.</p><p>Eleven of the critical RCE vulnerabilities are rated &quot;more likely&quot; to be exploited. <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50370">CVE-2026-50370</a> and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50518">CVE-2026-50518</a> are heap-based buffer overflows in the Windows DHCP Server service, exploitable by an unauthorized attacker over an adjacent network and over a network, respectively. <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54128">CVE-2026-54128</a> is a use-after-free in the Windows DHCP client that allows an unauthorized attacker to execute code locally. <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50327">CVE-2026-50327</a> and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50655">CVE-2026-50655</a> are heap-based buffer overflows in Windows Media and Windows Media Foundation. <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54992">CVE-2026-54992</a> is a heap-based buffer overflow in the Microsoft Message Queuing Queue Manager. <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56188">CVE-2026-56188</a> is a race condition in the Windows Server Network driver, and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55010">CVE-2026-55010</a> is a heap-based buffer overflow in the Minecraft Bedrock Dedicated Server that an unauthorized attacker could exploit over a network. <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50522">CVE-2026-50522</a> and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58644">CVE-2026-58644</a> are deserialization vulnerabilities in Microsoft SharePoint that allow an unauthorized attacker to execute code over a network. <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55944">CVE-2026-55944</a> is a deserialization vulnerability in Microsoft Dynamics NAV and Microsoft Dynamics 365 Business Central (on-premises) that allows an unauthorized attacker to execute code over a network.</p><p>The remaining critical RCE vulnerabilities are rated &quot;less likely&quot; or &quot;unlikely&quot; to be exploited, or were not assigned an exploitation-likelihood rating by Microsoft. Microsoft Office and its applications account for a large share: <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50314">CVE-2026-50314</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50467">CVE-2026-50467</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55018">CVE-2026-55018</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55022">CVE-2026-55022</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55045">CVE-2026-55045</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55049">CVE-2026-55049</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55056">CVE-2026-55056</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55129">CVE-2026-55129</a> and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55140">CVE-2026-55140</a> are in Microsoft Office; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55033">CVE-2026-55033</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55127">CVE-2026-55127</a> and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55132">CVE-2026-55132</a> are in Microsoft Word; and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55043">CVE-2026-55043</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55120">CVE-2026-55120</a> and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55123">CVE-2026-55123</a> are in Microsoft PowerPoint. These are typically triggered by opening a specially crafted document.</p><p>The remaining critical RCE vulnerabilities affect Windows Media and Media Foundation (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56189">CVE-2026-56189</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57087">CVE-2026-57087</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57090">CVE-2026-57090</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57094">CVE-2026-57094</a> and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58542">CVE-2026-58542</a>), the Windows DHCP Server service (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-48564">CVE-2026-48564</a> and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56159">CVE-2026-56159</a>), Windows GDI+ and GDI (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49796">CVE-2026-49796</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50380">CVE-2026-50380</a> and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54122">CVE-2026-54122</a>), the DirectX Graphics Kernel (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50382">CVE-2026-50382</a>), the Remote Desktop Client (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50474">CVE-2026-50474</a>), Microsoft SQL Server (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54117">CVE-2026-54117</a> and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54118">CVE-2026-54118</a>), the Windows Reliable Multicast Transport Driver (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54982">CVE-2026-54982</a> and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54995">CVE-2026-54995</a>), Windows TCP/IP (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54999">CVE-2026-54999</a>), the Windows Print Spooler (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58608">CVE-2026-58608</a>), the Windows SSTP (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50694">CVE-2026-50694</a>), Windows Active Directory Domain Services (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49164">CVE-2026-49164</a>), Microsoft Defender (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55011">CVE-2026-55011</a> and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55012">CVE-2026-55012</a>) and Microsoft Copilot (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-48561">CVE-2026-48561</a>).</p><p>The seven critical elevation of privilege vulnerabilities are <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-42982">CVE-2026-42982</a> and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50392">CVE-2026-50392</a> in Windows Secure Kernel Mode; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50444">CVE-2026-50444</a> in the Windows Server Update Service (WSUS); <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50680">CVE-2026-50680</a> and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54127">CVE-2026-54127</a> in Windows Hyper-V; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54121">CVE-2026-54121</a> in Active Directory Certificate Services; and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57092">CVE-2026-57092</a> in Microsoft Windows VMSwitch.</p><p>The single critical spoofing vulnerability is <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55008">CVE-2026-55008</a> in Microsoft Exchange Server, caused by a cross-site scripting condition. The single critical security feature bypass is <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55040">CVE-2026-55040</a> in Microsoft SharePoint Server, caused by weak authentication. Both are rated &quot;more likely&quot; to be exploited.</p><p>Several of the critical entries above &#x2014; including the Copilot, Azure Synapse, Azure OpenAI, Exchange Online and Entra items &#x2014; affect Microsoft cloud services, for which Microsoft has not assigned an exploitation-likelihood rating.</p><p>Talos would also like to highlight the following &quot;important&quot; vulnerabilities as Microsoft has determined that their exploitation is &quot;more likely:&quot;</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49170">CVE-2026-49170</a>: Windows StateRepository API Server file Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49795">CVE-2026-49795</a>: Windows Kernel Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49798">CVE-2026-49798</a>: Windows Kernel Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49805">CVE-2026-49805</a>: Win32k Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50297">CVE-2026-50297</a>: Win32k Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50325">CVE-2026-50325</a>: Win32k Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50329">CVE-2026-50329</a>: Microsoft DWM Core Library Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50332">CVE-2026-50332</a>: Windows Kernel Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50343">CVE-2026-50343</a>: Microsoft Install Service Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50351">CVE-2026-50351</a>: Windows Audio Compression Manager (ACM) Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50375">CVE-2026-50375</a>: DirectX Graphics Kernel Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50387">CVE-2026-50387</a>: Windows GDI Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50390">CVE-2026-50390</a>: Windows Kernel Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50423">CVE-2026-50423</a>: Windows Kernel Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50433">CVE-2026-50433</a>: Windows Media Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50436">CVE-2026-50436</a>: Windows Kernel Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50454">CVE-2026-50454</a>: Windows User Interface Core Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50475">CVE-2026-50475</a>: Windows Kernel Information Disclosure Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50476">CVE-2026-50476</a>: Windows Network Connections Service Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50489">CVE-2026-50489</a>: Win32k Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50509">CVE-2026-50509</a>: Wireless Wide Area Network Service (WwanSvc) Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50667">CVE-2026-50667</a>: Windows Common Log File System Driver Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50688">CVE-2026-50688</a>: Windows Win32k Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54114">CVE-2026-54114</a>: Windows Win32k Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54986">CVE-2026-54986</a>: Windows Win32k Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57091">CVE-2026-57091</a>: Windows File History Service Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58531">CVE-2026-58531</a>: Windows SMB Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58536">CVE-2026-58536</a>: Windows Cloud Files Mini Filter Driver Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58596">CVE-2026-58596</a>: Microsoft Edge (Chromium-based) Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58631">CVE-2026-58631</a>: Windows Admin Center (WAC) Remote Code Execution Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58633">CVE-2026-58633</a>: Desktop Window Manager Elevation of Privilege Vulnerability</p><p>&#xB7;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58638">CVE-2026-58638</a>: Windows Boot Loader Security Feature Bypass Vulnerability</p><p>A complete list of all the other vulnerabilities Microsoft disclosed this month is available on its <a href="https://msrc.microsoft.com/update-guide/releaseNote/2026-Jul">update page</a>.</p><p>In response to these vulnerability disclosures, Talos is releasing a new Snort ruleset that detects attempts to exploit some of them. Please note that additional rules may be released at a future date, and current rules are subject to change pending additional information. Cisco Security Firewall customers should use the latest update to their ruleset by updating their SRU. Open-source Snort Subscriber Ruleset customers can stay up to date by downloading the latest rule pack available for purchase on <a href="https://www.snort.org/">Snort.org</a>.</p><p>Snort 2 rules included in this release that protect against the exploitation of many of these vulnerabilities are: 1:66733 - 1:66743, 1:66745 - 1:66785, 1:66791 - 1:66793, 1:66800 - 1:66807</p><p>The following Snort 3 rules are also available: 1:301555 - 1:301579, 1:301581 - 1:301583</p>]]></content:encoded></item><item><title><![CDATA[[Video] Where protection starts: Cisco Talos Intelligence Integrations]]></title><description><![CDATA[Every day, defenders make high-consequence decisions with incomplete information. Learn how Cisco Talos Intelligence Integrations help reduce uncertainty by turning the latest threat intelligence into proactive protections across Cisco technologies.]]></description><link>https://blog.talosintelligence.com/video-where-protection-starts-cisco-talos-intelligence-integrations/</link><guid isPermaLink="false">6a54e4072d1d8700012364ee</guid><category><![CDATA[The Need to Know]]></category><dc:creator><![CDATA[Hazel Burton]]></dc:creator><pubDate>Tue, 14 Jul 2026 10:47:18 GMT</pubDate><media:content url="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Talos_integrations_header-2.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/Talos_integrations_header-2.jpg" alt="[Video] Where protection starts: Cisco Talos Intelligence Integrations"><p>Cybersecurity has always involved elements of uncertainty. Every day, security teams are asked to make decisions with incomplete information, while attackers rely on defenders not being able to see the full picture.</p><p>What defenders haven&apos;t always had to deal with is attackers using AI to rewrite malicious commands on the fly, malware that adapts its code upon every installation, and models that can search through decades of vulnerable code and exposed interfaces to uncover new opportunities for exploitation.</p><p>While none of that changes the fundamental purpose of cybersecurity &#x2014; to understand and act on what&apos;s happening in your environment&#xA0;&#x2014;&#xA0;it does make that picture harder and harder to build. Is a newly registered domain part of an attack? Is that outbound connection normal? Is that user behavior unusual?&#xA0;</p><p><a href="https://www.cisco.com/site/us/en/products/security/talos/threat-intelligence-services.html" rel="noreferrer">Cisco Talos Intelligence Integrations</a> helps answer those questions.</p><p>Across Cisco&#x2019;s security and enterprise technologies, Talos&#x2019; reputation and detection integrations continuously apply the latest threat intelligence to identify and block malicious activity.</p><p>Our latest video introduces some of the Talosians behind the integrations and explains how they work.</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/JXyz2gni2Us?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Where Protection Starts: Cisco Talos Intelligence Integrations"></iframe></figure><p>If you&apos;d like to learn more about the technologies behind Talos Intelligence Integrations, you&apos;ll find a more detailed overview on the&#xA0;<a href="https://www.cisco.com/site/us/en/products/security/talos/threat-intelligence-services.html"><u>Cisco Security website.</u></a></p>]]></content:encoded></item><item><title><![CDATA[The serpent’s tongue: Luring the Python out of its den]]></title><description><![CDATA[This blog examines the full lifecycle of a Python package, from hosting on repositories such as PyPI or custom web servers, through source and wheel distribution formats, to the final installation into virtual or system-wide Python environments.]]></description><link>https://blog.talosintelligence.com/the-serpents-tongue-luring-the-python-out-of-its-den/</link><guid isPermaLink="false">6a5518b52d1d8700012364fc</guid><category><![CDATA[Threat Spotlight]]></category><dc:creator><![CDATA[Onur Mustafa Erdogan]]></dc:creator><pubDate>Tue, 14 Jul 2026 10:00:06 GMT</pubDate><media:content url="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/python-package-header.jpg" medium="image"/><content:encoded><![CDATA[<ul><li>Python&apos;s popularity, readable syntax, and extensive third-party library ecosystem make it an attractive target for threat actors seeking to compromise developer devices and infrastructure.&#xA0;&#xA0;</li><li>Malicious packages and supply-chain attacks are increasingly common, exploiting the trust built into Python&apos;s packaging ecosystem to execute payloads at the moment of installation, without any direct interaction from the victim.&#xA0;&#xA0;</li><li>This blog examines the full lifecycle of a Python package, from hosting on repositories such as PyPI or custom web servers, through source and wheel distribution formats, to the final installation into virtual or system-wide Python environments. Each technique is assessed for persistence, supported build methods, and distribution compatibility.&#xA0;&#xA0;</li><li>We conclude with practical defensive measures, including dependency auditing tools, version pinning strategies, installation time controls, and general best practices for minimizing supply-chain risk.</li></ul><hr><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/python-package-header.jpg" alt="The serpent&#x2019;s tongue: Luring the Python out of its den"><p>Due to the friendly nature of its syntax, extensive capabilities, and wide range of libraries, Python&#x2019;s adoption by the developer community has been steadily increasing. Both the <a href="https://survey.stackoverflow.co/2025/technology#most-popular-technologies-language-language" rel="noreferrer noopener"><u>StackOverflow Developer Survey</u></a> and the first party package repository <a href="https://pypistats.org/packages/__all__" rel="noreferrer noopener"><u>PyPi&#x2019;s download stats</u></a> indicate rapidly growing usage, especially for data science, AI, and backend projects. Python has a very vibrant community of modules that can be easily installed using various package indexes. Unfortunately, this convenience comes with an additional burden. Malicious packages and supply chain infection are also increasingly common, as threat actors attempt to utilize these modules to infect as many victim devices as possible, abusing the very trust that the community is built upon. <a href="https://github.blog/security/supply-chain-security/a-year-of-open-source-vulnerability-trends-cves-advisories-and-malware/" rel="noreferrer noopener"><u>GitHub&#x2019;s 2025 security data</u></a> highlights the accelerating threat to the software supply chain, noting a 69% year-over-year increase in published malware advisories. Notably for Python developers, 17% of all reviewed advisories in the GitHub Advisory Database are now related to the Pip ecosystem, reflecting a significant targeting of Python-based environments. The threat actor group TeamPCP has also utilized software supply chain attacks, including misuse of Python modules, to compromise Microsoft&#x2019;s GitHub subsidiary and carry out 20 &#x201C;waves&#x201D; of supply chain attacks <a href="https://www.wired.com/story/teampcp-software-supply-chain-attack-spree-github/" rel="noreferrer noopener"><u>according to Wired.</u></a>&#xA0;</p><p>Users often believe that for a malicious payload to be executed they need to directly interact with the infected piece of code (e.g., providing it with a sensitive input, executing its entry point, or importing it to a working project). In reality, Python packages can establish a foothold simply through installation. While analyzing these techniques in detail, we will take a deeper look at the background process of package installation for Python. This will help understand the threat landscape for Python packages, including legitimate components adversaries try to alter for their benefit.</p><h2 id="journey-of-a-python-package">Journey of a Python package&#xA0;</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/python-package-installation-fig-1.jpg" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="2000" height="1693" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/python-package-installation-fig-1.jpg 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/python-package-installation-fig-1.jpg 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/python-package-installation-fig-1.jpg 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w2400/2026/07/python-package-installation-fig-1.jpg 2400w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure 1. Layers of Python package installation.</span></figcaption></figure><p>The process of moving a Python package from a remote repository to a local machine involves three distinct layers. While these layers are interconnected, they provide a useful abstraction for understanding the installation process:&#xA0;</p><ul><li>Hosting layer: Defines the location where the package is published&#xA0;</li><li>Distribution layer: Specifies the file formats supported by the package&#xA0;</li><li>Installation layer: Dictates the method of deployment for the package</li></ul><h3 id="hosting-packages">Hosting packages&#xA0;</h3><p>Python packages can be installed from various remote repositories.&#xA0;&#xA0;</p><p><strong>PyPI (Python Package Index): </strong>PyPI is the official repository for Python packages. The native package manager, pip, uses PyPI by default. Package details are accessible via a JSON API at &#x201C;https://pypi.org/pypi/&lt;package-name&gt;/json&#x201D;. During installation, the PyPI frontend redirects users to &#x201C;files.pythonhosted.org&#x201D;, where the actual files are stored. Download URLs are derived from the distribution file name and its blake2b_256 hash. For example:</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-1.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="326" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-1.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-1.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-1.png 1430w" sizes="(min-width: 720px) 720px"></figure><p><strong>Version control systems (VCS): </strong>Projects hosted on platforms like GitHub or GitLab can be installed directly. This supports open source development through transparent issue tracking. A project can be installed using the following command:</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-2.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="326" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-2.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-2.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-2.png 1430w" sizes="(min-width: 720px) 720px"></figure><p><strong>Custom web servers: </strong>Any web server with a suitable directory structure can serve as a repository. Packages must be hosted in folders using their normalized names, with all versions grouped together:</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-3.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="458" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-3.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-3.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-3.png 1430w" sizes="(min-width: 720px) 720px"></figure><p>To use a custom repository, pip must be instructed to use a different index URL:</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-4.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="326" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-4.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-4.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-4.png 1430w" sizes="(min-width: 720px) 720px"></figure><p>Alternatively, users can provide an extra index URL to search multiple repositories:</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-5.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="326" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-5.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-5.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-5.png 1430w" sizes="(min-width: 720px) 720px"></figure><p><strong>Configuration and environment variables:</strong> Index URLs can be specified in pip configuration files at three levels, global (system-wide), user (specific to a user), or site (specific to an environment). The <code>PIP_CONFIG_FILE</code> environment variable can also point to a custom configuration. Additionally, any pip command line argument can be converted into an environment variable using the <code>PIP_&lt;UPPER_LONG_NAME&gt;</code> format, such as <code>PIP_FIND_LINKS</code>.</p><h3 id="distributing-packages">Distributing Packages&#xA0;</h3><p>Independent of the hosting layer, Python packages are published in two primary formats:&#xA0;</p><ul><li><strong>Source Distributions (sdist):</strong> These come in a packed .tar.gz format. They contain the full source code and build instructions, requiring the package to be built on the user&apos;s workstation before installation.&#xA0;</li><li><strong>Wheel Distributions: </strong>These come in a pre-built .whl <a href="https://packaging.python.org/en/latest/specifications/binary-distribution-format/" rel="noreferrer noopener"><u>format</u></a>. They are ready to be deployed immediately, providing a faster and more robust installation process. Despite having .whl extension, these distributions use same format as the .zip files.&#xA0;</li></ul><p>Source distributions rely on build instructions, typically written as either a &#x201C;setup.py&#x201D; or &#x201C;pyproject.toml&#x201D; file. While &#x201C;pyproject.toml&#x201D; is the modern, preferred format due to its transparency and support for various backends, &#x201C;setup.py&#x201D; is a standalone script that uses <code>Setuptools</code>. A critical security concern is that &#x201C;setup.py&#x201D; executes automatically during installation or download, allowing for the execution of arbitrary code.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/comparison-table-1.jpg" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="2000" height="1247" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/comparison-table-1.jpg 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/comparison-table-1.jpg 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/07/comparison-table-1.jpg 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w2400/2026/07/comparison-table-1.jpg 2400w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Table 1. Brief comparison between &#x201C;setup.py&#x201D; and &#x201C;pyproject.toml&#x201D;.</span></figcaption></figure><h3 id="installing-packages">Installing packages&#xA0;</h3><p>Distribution format and target environment are the main parameters of the installation layer. Distribution format determines if the build process will take place on the user computer. Depending on the target environment used, accessibility of the package will differ after installation.&#xA0;</p><p>Besides system-wide deployments, use of virtual environments are very common. Virtualization of Python environment isolates packages and their versions per deployment. It prevents version conflicts between different software, which are relying on the same set of dependencies with varying versions. Isolation occurs mainly on the package and binary level. Once activated, a virtual environment is treated as a separate Python site, sharing the same file system and network interfaces, but with its own binary and package library. Therefore, we cannot consider this type of virtualization containerized.&#xA0;</p><p>Use of virtual environments provides convenient management for package dependencies. Direct dependencies of a Python package is handled in various locations. Within source distributions, direct dependencies can be found on:&#xA0;</p><ul><li>&#x201C;setup.py&#x201D;, the setup function contains an <code>install_requires</code> parameter, where dependencies can be listed</li><li>&#x201C;pyproject.toml&#x201D;, under &#x201C;projects&#x201D; section, <code>dependencies</code> parameter lists required packages&#xA0;</li><li>&#x201C;requirements.txt&#x201D; file contains a list of dependencies&#xA0;</li><li>&#x201C;Pipfile&#x201D;, under <code>packages</code> section&#xA0;</li></ul><p>After package is built, dependencies are listed in the &#x201C;METADATA&#x201D; file under &#x201C;.dist-info&#x201D; folder within wheel distribution file.&#xA0;&#xA0;</p><p>Tools like poetry, uv, and hatch are replacing native solutions by providing end-to-end management for environments, packages, and projects. These tools extend &#x201C;pyproject.toml&#x201D; capabilities by adding tool-specific sections to handle complex build-time tasks.</p><h2 id="entry-points-for-malicious-payloads">Entry points for malicious payloads&#xA0;</h2><p>The delivery medium for a malicious payload often defines its victim base. While phishing campaigns might target broad demographics based on geography or language, package manager attacks specifically target individuals with software development skills. In a modern enterprise, these individuals often hold administrative rights across sensitive assets, including endpoints, source code repositories, Continuous Integration and Continuous Delivery (CI/CD) pipelines, and cloud infrastructure. This makes them high-interest targets for adversarial campaigns. Furthermore, the rise of AI-based tooling has expanded this target group, increasing the potential impact of a single breach. &#xA0;</p><p>In this landscape, Python offers a feature-rich and popular environment favored by both developers and adversaries. Despite malicious packages being identified and removed from public repositories within hours, this is still a valid opportunity window for adversaries. Payload execution can occur within minutes of installing the malicious package, and exfiltration can be achieved <a href="https://www.paloaltonetworks.com/resources/research/unit-42-incident-response-report" rel="noreferrer noopener"><u>within an hour</u></a>, depending on adversarial goals. Later, operationalization of stolen assets by different actors can occur <a href="https://whiteintel.io/blog/infostealer-lifecycle-48-hours" rel="noreferrer">within just a few days</a>. Recent trends indicated <a href="https://cloud.google.com/security/resources/m-trends" rel="noreferrer noopener"><u>dwell time of nine days</u></a> once compromised. This might vary based-on detection and response capabilities of an organization. Therefore, having a structured understanding of malicious Python packages can help us estimate the impact of the infection and avoid being compromised all together.&#xA0;</p><p>With this in mind, let&apos;s delve deeper into Python packages and highlight native features abused by the adversaries within a structured format. We group adversarial techniques into two main categories (build hook abuses and package content abuses) and list some additional characteristics, that convey the potential impact that can be inflicted upon the victim system:&#xA0;</p><ul><li><strong>OS</strong>: Operating System support for this technique&#xA0;</li><li><strong>Category</strong>: Category of the technique, based on the Python feature it abuses&#xA0;</li><li><strong>Persistence</strong>: Indicates if the payload can persist between executions&#xA0;</li><li><strong>Build</strong>: Shows the supported build methods for the technique&#xA0;</li><li><strong>Distributions</strong>: Indicates if technique requires package to be build on victim endpoint&#xA0;</li></ul><h2 id="build-hook-abuses">Build hook abuses&#xA0;</h2><h3 id="command-class-utilization-on-setup-files">Command class utilization on setup files&#xA0;</h3>
<!--kg-card-begin: html-->
<table class="Table Ltr TableWordWrap SCXW163761018 BCX4" border="1" dir="ltr" data-tablestyle="MsoNormalTable" data-tablelook="1184" aria-rowcount="5" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; table-layout: fixed; width: 1px; border-collapse: collapse; empty-cells: show; position: relative; overflow: visible; background: none; border-spacing: 0px;"><tbody class="SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text;"><tr class="TableRow SCXW163761018 BCX4" role="row" aria-rowindex="1" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstRow FirstCol SCXW163761018 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 111px;"><div class="TableCellContent SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW163761018 BCX4" paraid="1934545057" paraeid="{a465b026-38b1-4b27-bb39-ba1e3ac218af}{141}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">OS</span></span><span class="EOP SCXW163761018 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="FirstRow LastCol SCXW163761018 BCX4" role="columnheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 511px;"><div class="TableCellContent SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW163761018 BCX4" paraid="833008234" paraeid="{a465b026-38b1-4b27-bb39-ba1e3ac218af}{148}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Windows, Linux, macOS</span></span><span class="EOP SCXW163761018 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW163761018 BCX4" role="row" aria-rowindex="2" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW163761018 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 111px;"><div class="TableCellContent SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW163761018 BCX4" paraid="327841878" paraeid="{a465b026-38b1-4b27-bb39-ba1e3ac218af}{156}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Category</span></span><span class="EOP SCXW163761018 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW163761018 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 511px;"><div class="TableCellContent SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW163761018 BCX4" paraid="1110911929" paraeid="{a465b026-38b1-4b27-bb39-ba1e3ac218af}{163}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Build Hook Abuse</span></span><span class="EOP SCXW163761018 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW163761018 BCX4" role="row" aria-rowindex="3" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW163761018 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 111px;"><div class="TableCellContent SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW163761018 BCX4" paraid="1223526327" paraeid="{a465b026-38b1-4b27-bb39-ba1e3ac218af}{171}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Persistence</span></span><span class="EOP SCXW163761018 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW163761018 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 511px;"><div class="TableCellContent SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW163761018 BCX4" paraid="1534876949" paraeid="{a465b026-38b1-4b27-bb39-ba1e3ac218af}{178}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Transient (fires once at install, leaves no residue)</span></span><span class="EOP SCXW163761018 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW163761018 BCX4" role="row" aria-rowindex="4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW163761018 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 111px;"><div class="TableCellContent SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW163761018 BCX4" paraid="1507254551" paraeid="{a465b026-38b1-4b27-bb39-ba1e3ac218af}{186}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Build</span></span><span class="EOP SCXW163761018 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW163761018 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 511px;"><div class="TableCellContent SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW163761018 BCX4" paraid="595989002" paraeid="{a465b026-38b1-4b27-bb39-ba1e3ac218af}{193}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">setup.py</span></span><span class="EOP SCXW163761018 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW163761018 BCX4" role="row" aria-rowindex="5" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol LastRow SCXW163761018 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 111px;"><div class="TableCellContent SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW163761018 BCX4" paraid="1503559227" paraeid="{a465b026-38b1-4b27-bb39-ba1e3ac218af}{201}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Distributions</span></span><span class="EOP SCXW163761018 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol LastRow SCXW163761018 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 511px;"><div class="TableCellContent SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW163761018 BCX4" paraid="811430273" paraeid="{a465b026-38b1-4b27-bb39-ba1e3ac218af}{208}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163761018 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">sdist</span></span><span class="EOP SCXW163761018 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p></p><p>&#x201C;setup.py&#x201D; helps with building the source distribution into a package on clients. It can execute arbitrary code during build process and mainly uses <code>setuptools</code> library&#x2019;s <code>setup</code> function, to run pre/post-installation actions. setup function uses command classes through <code>distutils</code> <a href="https://docs.python.org/3.11/distutils/apiref.html#module-distutils.command.install" rel="noreferrer noopener"><u>library</u></a> to build the package. The initial payload is executed once during package installation. In the wild examples of <code>install</code> command class abuse were previously <a href="https://www.fortinet.com/blog/threat-research/fortiguard-ai-detects-malicious-packages-in-pypi" rel="noreferrer noopener"><u>reported</u></a>.&#xA0;</p><p>In Figure 2, the <code>setup</code> function uses a malicious mock-object called <code>BeaconOnInstall</code> to override installation behavior of the package.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-6-figure-2.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="1118" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-6-figure-2.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-6-figure-2.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-6-figure-2.png 1430w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure 2. &#x201C;setup.py&#x201D; containing a malicious command class.</span></figcaption></figure><p>After installing the Python package, the pyproject hooking script beacons third-party domains, as instructed with the <code>BeaconOnInstall</code> object.</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-7.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="360" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-7.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-7.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-7.png 1430w" sizes="(min-width: 720px) 720px"></figure><h3 id="use-of-path-configuration-files">Use of Path Configuration Files&#xA0;</h3>
<!--kg-card-begin: html-->
<table class="Table Ltr TableWordWrap SCXW100511730 BCX4" border="1" dir="ltr" data-tablestyle="MsoNormalTable" data-tablelook="1184" aria-rowcount="5" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; table-layout: fixed; width: 1px; border-collapse: collapse; empty-cells: show; position: relative; overflow: visible; background: none; border-spacing: 0px;"><tbody class="SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text;"><tr class="TableRow SCXW100511730 BCX4" role="row" aria-rowindex="1" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstRow FirstCol SCXW100511730 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 223px;"><div class="TableCellContent SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW100511730 BCX4" paraid="1053720096" paraeid="{af509747-e7a7-4d1a-acab-632c7ee68a21}{109}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">OS</span></span><span class="EOP SCXW100511730 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="FirstRow LastCol SCXW100511730 BCX4" role="columnheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 399px;"><div class="TableCellContent SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW100511730 BCX4" paraid="315191382" paraeid="{af509747-e7a7-4d1a-acab-632c7ee68a21}{116}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Windows, Linux, macOS</span></span><span class="EOP SCXW100511730 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW100511730 BCX4" role="row" aria-rowindex="2" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW100511730 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 223px;"><div class="TableCellContent SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW100511730 BCX4" paraid="1257941811" paraeid="{af509747-e7a7-4d1a-acab-632c7ee68a21}{124}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Category</span></span><span class="EOP SCXW100511730 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW100511730 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 399px;"><div class="TableCellContent SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW100511730 BCX4" paraid="226929180" paraeid="{af509747-e7a7-4d1a-acab-632c7ee68a21}{131}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Build Hook Abuse</span></span><span class="EOP SCXW100511730 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW100511730 BCX4" role="row" aria-rowindex="3" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW100511730 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 223px;"><div class="TableCellContent SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW100511730 BCX4" paraid="1352192791" paraeid="{af509747-e7a7-4d1a-acab-632c7ee68a21}{139}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Persistence</span></span><span class="EOP SCXW100511730 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW100511730 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 399px;"><div class="TableCellContent SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW100511730 BCX4" paraid="300351721" paraeid="{af509747-e7a7-4d1a-acab-632c7ee68a21}{146}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Persistent</span></span><span class="EOP SCXW100511730 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW100511730 BCX4" role="row" aria-rowindex="4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW100511730 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 223px;"><div class="TableCellContent SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW100511730 BCX4" paraid="701207404" paraeid="{af509747-e7a7-4d1a-acab-632c7ee68a21}{154}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Build</span></span><span class="EOP SCXW100511730 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW100511730 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 399px;"><div class="TableCellContent SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW100511730 BCX4" paraid="31677727" paraeid="{af509747-e7a7-4d1a-acab-632c7ee68a21}{161}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">setup.py, </span><span class="NormalTextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">pyproject.toml</span></span><span class="EOP SCXW100511730 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW100511730 BCX4" role="row" aria-rowindex="5" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol LastRow SCXW100511730 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 223px;"><div class="TableCellContent SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW100511730 BCX4" paraid="1018948725" paraeid="{af509747-e7a7-4d1a-acab-632c7ee68a21}{169}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Distributions</span></span><span class="EOP SCXW100511730 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol LastRow SCXW100511730 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 399px;"><div class="TableCellContent SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW100511730 BCX4" paraid="275453867" paraeid="{af509747-e7a7-4d1a-acab-632c7ee68a21}{176}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">sdist</span><span class="NormalTextRun SCXW100511730 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">, wheel</span></span><span class="EOP SCXW100511730 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p></p><p>Path configuration files (.pth) are used to extend system path coverage for Python environments. They are expected to contain file paths in order to point out additional directories for runtime usage. Yet, they are capable of executing Python one-liners. Once a .pth file was added directly under package folders, such as &#x201C;site-packages&#x201D; or &#x201C;dist-packages&#x201D;, they are executed with every invocation of Python, therefore exhibiting a persistent behavior on the victim endpoint. This technique can be achieved regardless of the build method and distribution type. One of the high profile campaigns using this technique was initiated by the TeamPCP during supply chain <a href="https://www.endorlabs.com/learn/teampcp-isnt-done" rel="noreferrer noopener"><u>compromise</u></a> of the <code>litellm</code> package.&#xA0;</p><p>In order to leverage .pth files through &#x201C;setup.py&#x201D;, we can again use the help of <code>distutils</code> command classes. Our hidden payload located in a .md file, will be converted to a .pth file and will be added to the root of the package directory, once the build process is completed.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-8-figure-3.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="1842" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-8-figure-3.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-8-figure-3.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-8-figure-3.png 1430w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure 3. &#x201C;setup.py&#x201D; leveraging command classes to write a .pth file on disk.</span></figcaption></figure><p>Alternatively, same can be achieved through &#x201C;pyproject.toml&#x201D; file. If the <a href="https://pypi.org/project/hatchling/" rel="noreferrer noopener"><u>Hatchling</u></a> backend is used, you can use the <code>tool.hatch.build.targets.wheel.force-include</code> capability in order to drop a &#x201C;.pth&#x201D; file under the packages folder.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-9-figure-4.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="986" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-9-figure-4.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-9-figure-4.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-9-figure-4.png 1430w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure 4. &#x201C;pyproject.toml&#x201D; writing a .pth file on disk.&#xA0;</span></figcaption></figure><p>After installing this package, every invocation of Python (whether failed or succeeded) will be infected with the payload located within the .pth file. For testing purposes, this payload executed &#x201C;calc.exe&#x201D; after each invocation of Python.</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-10.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="458" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-10.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-10.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-10.png 1430w" sizes="(min-width: 720px) 720px"></figure><h3 id="use-of-site-hook-modules">Use of Site Hook Modules&#xA0;</h3>
<!--kg-card-begin: html-->
<table class="Table Ltr TableWordWrap SCXW180821648 BCX4" border="1" dir="ltr" data-tablestyle="MsoNormalTable" data-tablelook="1184" aria-rowcount="5" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; table-layout: fixed; width: 1px; border-collapse: collapse; empty-cells: show; position: relative; overflow: visible; background: none; border-spacing: 0px;"><tbody class="SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text;"><tr class="TableRow SCXW180821648 BCX4" role="row" aria-rowindex="1" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstRow FirstCol SCXW180821648 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 223px;"><div class="TableCellContent SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW180821648 BCX4" paraid="132328827" paraeid="{6dce087d-fd39-46f4-b6c8-5d83250051e0}{170}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">OS</span></span><span class="EOP SCXW180821648 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="FirstRow LastCol SCXW180821648 BCX4" role="columnheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 399px;"><div class="TableCellContent SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW180821648 BCX4" paraid="827620713" paraeid="{6dce087d-fd39-46f4-b6c8-5d83250051e0}{177}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Windows, Linux, macOS</span></span><span class="EOP SCXW180821648 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW180821648 BCX4" role="row" aria-rowindex="2" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW180821648 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 223px;"><div class="TableCellContent SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW180821648 BCX4" paraid="216919498" paraeid="{6dce087d-fd39-46f4-b6c8-5d83250051e0}{185}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Category</span></span><span class="EOP SCXW180821648 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW180821648 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 399px;"><div class="TableCellContent SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW180821648 BCX4" paraid="516428156" paraeid="{6dce087d-fd39-46f4-b6c8-5d83250051e0}{192}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Build Hook Abuse</span></span><span class="EOP SCXW180821648 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW180821648 BCX4" role="row" aria-rowindex="3" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW180821648 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 223px;"><div class="TableCellContent SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW180821648 BCX4" paraid="769518888" paraeid="{6dce087d-fd39-46f4-b6c8-5d83250051e0}{200}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Persistence</span></span><span class="EOP SCXW180821648 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW180821648 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 399px;"><div class="TableCellContent SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW180821648 BCX4" paraid="903865314" paraeid="{6dce087d-fd39-46f4-b6c8-5d83250051e0}{207}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Persistent</span></span><span class="EOP SCXW180821648 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW180821648 BCX4" role="row" aria-rowindex="4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW180821648 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 223px;"><div class="TableCellContent SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW180821648 BCX4" paraid="1597685541" paraeid="{6dce087d-fd39-46f4-b6c8-5d83250051e0}{215}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Build</span></span><span class="EOP SCXW180821648 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW180821648 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 399px;"><div class="TableCellContent SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW180821648 BCX4" paraid="1807992309" paraeid="{6dce087d-fd39-46f4-b6c8-5d83250051e0}{222}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">setup.py, </span><span class="NormalTextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">pyproject.toml</span></span><span class="EOP SCXW180821648 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW180821648 BCX4" role="row" aria-rowindex="5" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol LastRow SCXW180821648 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 223px;"><div class="TableCellContent SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW180821648 BCX4" paraid="2023432926" paraeid="{6dce087d-fd39-46f4-b6c8-5d83250051e0}{230}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Distributions</span></span><span class="EOP SCXW180821648 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol LastRow SCXW180821648 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 399px;"><div class="TableCellContent SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW180821648 BCX4" paraid="1922403991" paraeid="{6dce087d-fd39-46f4-b6c8-5d83250051e0}{237}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">sdist</span><span class="NormalTextRun SCXW180821648 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">, wheel</span></span><span class="EOP SCXW180821648 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p></p><p>Python&#x2019;s <a href="https://docs.python.org/3/library/site.html" rel="noreferrer noopener"><u>site</u></a> module provides <code>sitecustomize</code> and <code>usercustomize</code> hooks in order to help customize Python deployments per site. Originally, it is aimed to help customize the environment before Python is executed. These hooks runs the contents of &#x201C;usercustomize.py&#x201D; and &#x201C;sitecustomize.py&#x201D; files, which are located within the directories listed in <code>sys.path</code> Python variable. Package folders are one of the directories Python looks for these modules. If an adversary manages to manipulate existing scripts or drop their own into one of these directories, they can hijack the given environment and execute their payload with every Python invocation, therefore achieving persistence on the victim endpoint. The VIPERTUNNEL backdoor was <a href="https://socprime.com/active-threats/vipertunnel-python-backdoor-analysis/" rel="noreferrer noopener"><u>reported</u></a> to abuse site hooks in order to import and trigger DLL execution.&#xA0;</p><p>Similarly to the previous technique, we can use both &#x201C;setup.py&#x201D; and &#x201C;pyproject.toml&#x201D; in order to drop &#x201C;sitecustomize.py&#x201D; directly under the packages folder. After installing the package, we&#x2019;ve executed <code>pip freeze</code>, to test the execution of our payload. Since the <code>pip</code> command uses Python environment in the background, it triggered our payload, and we observed <code>curl</code> command making connection attempts against &#x201C;www.google.com&#x201D;.</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-11.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="458" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-11.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-11.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-11.png 1430w" sizes="(min-width: 720px) 720px"></figure><h3 id="manipulation-of-pythonpath-environment-variable">Manipulation of PYTHONPATH Environment Variable&#xA0;</h3>
<!--kg-card-begin: html-->
<table class="Table Ltr TableWordWrap SCXW248921614 BCX4" border="1" dir="ltr" data-tablestyle="MsoNormalTable" data-tablelook="1184" aria-rowcount="5" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; table-layout: fixed; width: 1px; border-collapse: collapse; empty-cells: show; position: relative; overflow: visible; background: none; border-spacing: 0px;"><tbody class="SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text;"><tr class="TableRow SCXW248921614 BCX4" role="row" aria-rowindex="1" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstRow FirstCol SCXW248921614 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 223px;"><div class="TableCellContent SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW248921614 BCX4" paraid="840990903" paraeid="{1ffc0050-9399-4184-9ddf-418b0534845b}{121}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">OS</span></span><span class="EOP SCXW248921614 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="FirstRow LastCol SCXW248921614 BCX4" role="columnheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 399px;"><div class="TableCellContent SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW248921614 BCX4" paraid="603372328" paraeid="{1ffc0050-9399-4184-9ddf-418b0534845b}{128}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Windows, Linux, macOS</span></span><span class="EOP SCXW248921614 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW248921614 BCX4" role="row" aria-rowindex="2" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW248921614 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 223px;"><div class="TableCellContent SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW248921614 BCX4" paraid="624110477" paraeid="{1ffc0050-9399-4184-9ddf-418b0534845b}{136}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Category</span></span><span class="EOP SCXW248921614 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW248921614 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 399px;"><div class="TableCellContent SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW248921614 BCX4" paraid="924482814" paraeid="{1ffc0050-9399-4184-9ddf-418b0534845b}{143}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Build Hook Abuse</span></span><span class="EOP SCXW248921614 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW248921614 BCX4" role="row" aria-rowindex="3" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW248921614 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 223px;"><div class="TableCellContent SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW248921614 BCX4" paraid="1554830812" paraeid="{1ffc0050-9399-4184-9ddf-418b0534845b}{151}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Persistence</span></span><span class="EOP SCXW248921614 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW248921614 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 399px;"><div class="TableCellContent SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW248921614 BCX4" paraid="1838493501" paraeid="{1ffc0050-9399-4184-9ddf-418b0534845b}{158}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Persistent</span></span><span class="EOP SCXW248921614 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW248921614 BCX4" role="row" aria-rowindex="4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW248921614 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 223px;"><div class="TableCellContent SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW248921614 BCX4" paraid="1979903537" paraeid="{1ffc0050-9399-4184-9ddf-418b0534845b}{166}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Build</span></span><span class="EOP SCXW248921614 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW248921614 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 399px;"><div class="TableCellContent SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW248921614 BCX4" paraid="1769519039" paraeid="{1ffc0050-9399-4184-9ddf-418b0534845b}{173}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">setup.py</span></span><span class="EOP SCXW248921614 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW248921614 BCX4" role="row" aria-rowindex="5" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol LastRow SCXW248921614 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 223px;"><div class="TableCellContent SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW248921614 BCX4" paraid="500379426" paraeid="{1ffc0050-9399-4184-9ddf-418b0534845b}{181}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Distributions</span></span><span class="EOP SCXW248921614 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol LastRow SCXW248921614 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 399px;"><div class="TableCellContent SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW248921614 BCX4" paraid="1237581158" paraeid="{1ffc0050-9399-4184-9ddf-418b0534845b}{188}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW248921614 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">sdist</span></span><span class="EOP SCXW248921614 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p></p><p>As previously described, Python looks up the <code>sys.path</code> variable in order to determine which directories to use for importing modules. The value of the <code>sys.path</code> is generated through site module of Python. It collects user and site folders, and combines them together with &#x201C;.pth&#x201D; files and the value of the <code>PYTHONPATH</code> environment variable. If the adversary is able to control the value of <code>PYTHONPATH</code> environment variable, they can point it to anywhere they would like and manipulate imported packages. Every Python invocation of corresponding users would be infected, achieving a user level persistence on the targeted Python environment. This technique is suitable only through source distributions that are leverage &#x201C;setup.py&#x201D; based builds. Although its abuse is well-known by the community, vulnerabilities arising from the misuse of the <code>PYTHONPATH</code> variable were also previously <a href="https://www.qualys.com/2024/11/19/needrestart/needrestart.txt" rel="noreferrer noopener"><u>reported.</u></a>&#xA0;</p><p>If used in conjunction with Python site hooks, the malicious payload within &#x201C;sitecustomize.py&#x201D; can be invoked without requiring it to be placed under the packages directory. We can extend module search towards the malicious package folder to achieve code execution. In Figure 5, the &#x201C;setup.py&#x201D; file leverages <code>distutils</code> command classes and alters the user profile to manipulate the value of <code>PYTHONPATH</code>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-12-figure-5.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1234" height="1980" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-12-figure-5.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-12-figure-5.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-12-figure-5.png 1234w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure 5. &#x201C;setup.py&#x201D; manipulating </span><code spellcheck="false" style="white-space: pre-wrap;"><span>PYTHONPATH</span></code><span style="white-space: pre-wrap;"> environment variable.&#xA0;</span></figcaption></figure><p>Once the user profile is altered, future Python invocations from new shell sessions will lead to infected executions. User profile updates will impact the current shell session, since its preferences are already imported ahead of its creation.</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-13.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="418" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-13.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-13.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-13.png 1430w" sizes="(min-width: 720px) 720px"></figure><h2 id="package-content-abuses">Package content abuses&#xA0;</h2><h3 id="import-time-loading-of-malicious-payload">Import time loading of malicious payload&#xA0;</h3>
<!--kg-card-begin: html-->
<table class="Table Ltr TableWordWrap SCXW202814000 BCX4" border="1" dir="ltr" data-tablestyle="MsoNormalTable" data-tablelook="1184" aria-rowcount="5" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; table-layout: fixed; width: 1px; border-collapse: collapse; empty-cells: show; position: relative; overflow: visible; background: none; border-spacing: 0px;"><tbody class="SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text;"><tr class="TableRow SCXW202814000 BCX4" role="row" aria-rowindex="1" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstRow FirstCol SCXW202814000 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 123px;"><div class="TableCellContent SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW202814000 BCX4" paraid="753855993" paraeid="{9babb7f4-2a63-49a3-9417-948ca5c02f00}{153}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">OS</span></span><span class="EOP SCXW202814000 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="FirstRow LastCol SCXW202814000 BCX4" role="columnheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 499px;"><div class="TableCellContent SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW202814000 BCX4" paraid="1697397747" paraeid="{9babb7f4-2a63-49a3-9417-948ca5c02f00}{160}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Windows, Linux, macOS</span></span><span class="EOP SCXW202814000 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW202814000 BCX4" role="row" aria-rowindex="2" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW202814000 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 123px;"><div class="TableCellContent SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW202814000 BCX4" paraid="1845753410" paraeid="{9babb7f4-2a63-49a3-9417-948ca5c02f00}{168}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Category</span></span><span class="EOP SCXW202814000 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW202814000 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 499px;"><div class="TableCellContent SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW202814000 BCX4" paraid="688601162" paraeid="{9babb7f4-2a63-49a3-9417-948ca5c02f00}{175}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Package Content Abuse</span></span><span class="EOP SCXW202814000 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW202814000 BCX4" role="row" aria-rowindex="3" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW202814000 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 123px;"><div class="TableCellContent SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW202814000 BCX4" paraid="1234026315" paraeid="{9babb7f4-2a63-49a3-9417-948ca5c02f00}{183}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Persistence</span></span><span class="EOP SCXW202814000 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW202814000 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 499px;"><div class="TableCellContent SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW202814000 BCX4" paraid="1576043935" paraeid="{9babb7f4-2a63-49a3-9417-948ca5c02f00}{190}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Conditional (fires when victim imports from the package)</span></span><span class="EOP SCXW202814000 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW202814000 BCX4" role="row" aria-rowindex="4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW202814000 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 123px;"><div class="TableCellContent SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW202814000 BCX4" paraid="2089572686" paraeid="{9babb7f4-2a63-49a3-9417-948ca5c02f00}{198}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Build</span></span><span class="EOP SCXW202814000 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW202814000 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 499px;"><div class="TableCellContent SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW202814000 BCX4" paraid="793447765" paraeid="{9babb7f4-2a63-49a3-9417-948ca5c02f00}{205}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">setup.py, </span><span class="NormalTextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">pyproject.toml</span></span><span class="EOP SCXW202814000 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW202814000 BCX4" role="row" aria-rowindex="5" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol LastRow SCXW202814000 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 123px;"><div class="TableCellContent SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW202814000 BCX4" paraid="2070326457" paraeid="{9babb7f4-2a63-49a3-9417-948ca5c02f00}{213}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Distributions</span></span><span class="EOP SCXW202814000 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol LastRow SCXW202814000 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 499px;"><div class="TableCellContent SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW202814000 BCX4" paraid="754787910" paraeid="{9babb7f4-2a63-49a3-9417-948ca5c02f00}{220}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">sdist</span><span class="NormalTextRun SCXW202814000 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">, wheel</span></span><span class="EOP SCXW202814000 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p></p><p>Init files define their parent folder as a Python package. They also enable users to customize import process of a module within the same folder. They are executed each time a module within the same folder is imported. Adversaries abuse this feature by hiding their malicious payload within often overlooked &#x201C;__init__.py&#x201D; files. This technique does not lead to compromising of the entire Python environment. The malicious payload only gets invoked once a module is imported from its directory, therefore leading to a conditional persistence on the target environment. This technique has been utilized <a href="https://snyk.io/blog/lightning-pypi-compromise-bun-based-credential-stealer/" rel="noreferrer noopener"><u>in the wild</u></a> as part of the <code>lightning</code> supply chain compromise.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-14-figure-6.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="360" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-14-figure-6.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-14-figure-6.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-14-figure-6.png 1430w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure 6. Importing a function from an infected package.&#xA0;</span></figcaption></figure><p>Importing the module on Python interpreter or executing a script that imports functions from this module leads to victim endpoint&#x2019;s compromise.</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-15.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="427" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-15.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-15.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-15.png 1430w" sizes="(min-width: 720px) 720px"></figure><p><strong>Payload execution through module scripts</strong>&#xA0;</p>
<!--kg-card-begin: html-->
<table class="Table Ltr TableWordWrap SCXW163878288 BCX4" border="1" dir="ltr" data-tablestyle="MsoNormalTable" data-tablelook="1184" aria-rowcount="5" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; table-layout: fixed; width: 1px; border-collapse: collapse; empty-cells: show; position: relative; overflow: visible; background: none; border-spacing: 0px;"><tbody class="SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text;"><tr class="TableRow SCXW163878288 BCX4" role="row" aria-rowindex="1" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstRow FirstCol SCXW163878288 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 110px;"><div class="TableCellContent SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW163878288 BCX4" paraid="882089264" paraeid="{6f425647-4d7e-480a-9f78-56bf52300345}{71}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">OS</span></span><span class="EOP SCXW163878288 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="FirstRow LastCol SCXW163878288 BCX4" role="columnheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 512px;"><div class="TableCellContent SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW163878288 BCX4" paraid="503452360" paraeid="{6f425647-4d7e-480a-9f78-56bf52300345}{78}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Windows, Linux, macOS</span></span><span class="EOP SCXW163878288 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW163878288 BCX4" role="row" aria-rowindex="2" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW163878288 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 110px;"><div class="TableCellContent SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW163878288 BCX4" paraid="1424465358" paraeid="{6f425647-4d7e-480a-9f78-56bf52300345}{86}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Category</span></span><span class="EOP SCXW163878288 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW163878288 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 512px;"><div class="TableCellContent SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW163878288 BCX4" paraid="1419629806" paraeid="{6f425647-4d7e-480a-9f78-56bf52300345}{93}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Package Content Abuse</span></span><span class="EOP SCXW163878288 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW163878288 BCX4" role="row" aria-rowindex="3" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW163878288 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 110px;"><div class="TableCellContent SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW163878288 BCX4" paraid="1399956635" paraeid="{6f425647-4d7e-480a-9f78-56bf52300345}{101}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Persistence</span></span><span class="EOP SCXW163878288 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW163878288 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 512px;"><div class="TableCellContent SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW163878288 BCX4" paraid="1237626903" paraeid="{6f425647-4d7e-480a-9f78-56bf52300345}{108}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Conditional (fires when victim runs the package with </span></span><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 10pt; line-height: 15px; font-family: &quot;Courier New&quot;, &quot;Courier New_EmbeddedFont&quot;, &quot;Courier New_MSCustomFont&quot;, &quot;Courier New_MSFontService&quot;, monospace; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">python -m</span></span><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">)</span></span><span class="EOP SCXW163878288 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW163878288 BCX4" role="row" aria-rowindex="4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW163878288 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 110px;"><div class="TableCellContent SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW163878288 BCX4" paraid="1289910559" paraeid="{6f425647-4d7e-480a-9f78-56bf52300345}{120}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Build</span></span><span class="EOP SCXW163878288 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW163878288 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 512px;"><div class="TableCellContent SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW163878288 BCX4" paraid="659384790" paraeid="{6f425647-4d7e-480a-9f78-56bf52300345}{127}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">setup.py, </span><span class="NormalTextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">pyproject.toml</span></span><span class="EOP SCXW163878288 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW163878288 BCX4" role="row" aria-rowindex="5" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol LastRow SCXW163878288 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 110px;"><div class="TableCellContent SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW163878288 BCX4" paraid="2115189827" paraeid="{6f425647-4d7e-480a-9f78-56bf52300345}{135}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Distributions</span></span><span class="EOP SCXW163878288 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol LastRow SCXW163878288 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 512px;"><div class="TableCellContent SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW163878288 BCX4" paraid="1123804244" paraeid="{6f425647-4d7e-480a-9f78-56bf52300345}{142}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">sdist</span><span class="NormalTextRun SCXW163878288 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">, wheel</span></span><span class="EOP SCXW163878288 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p></p><p>Python packages can be executed as a script using the <code>-m</code> flag. In this case, a package is imported and its &#x201C;__main__.py&#x201D; is used as an entry point. Python package manager pip is one of the common examples of this usage. Besides having its standalone binary &#x201C;pip.exe&#x201D;, it also can be executed as <code>python -m pip &lt;args&gt;</code>. Similarly, Python site module can be executed as a script, in order to list site configuration of the given Python environment.&#xA0;&#xA0;</p><p>Adversaries can leverage main files to hide their payloads. Malicious code gets executed each time module is executed as a script, therefore achieving a conditional persistence on the victim endpoint. In Figure 7, &#x201C;__main__.py&#x201D;, belonging to <code>redpy_demo</code> package, executes the <code>netstat</code> command through using the <code>subprocess</code> module.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-16-figure-7.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="690" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-16-figure-7.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-16-figure-7.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-16-figure-7.png 1430w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure 7. __main__.py executing commands through cmd.exe.</span></figcaption></figure><p>After installation, executing the <code>redpy_demo</code> package as a module leads to execution of arbitrary code.</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-17.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="427" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-17.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-17.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-17.png 1430w" sizes="(min-width: 720px) 720px"></figure><h3 id="search-order-hijacking-through-entry-points">Search order hijacking through entry points&#xA0;</h3>
<!--kg-card-begin: html-->
<table class="Table Ltr TableWordWrap SCXW153915742 BCX4" border="1" dir="ltr" data-tablestyle="MsoNormalTable" data-tablelook="1184" aria-rowcount="5" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; table-layout: fixed; width: 1px; border-collapse: collapse; empty-cells: show; position: relative; overflow: visible; background: none; border-spacing: 0px;"><tbody class="SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text;"><tr class="TableRow SCXW153915742 BCX4" role="row" aria-rowindex="1" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstRow FirstCol SCXW153915742 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 114px;"><div class="TableCellContent SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW153915742 BCX4" paraid="1216549961" paraeid="{548fed22-a656-4c6e-b64a-eb608c0e308d}{33}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">OS</span></span><span class="EOP SCXW153915742 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="FirstRow LastCol SCXW153915742 BCX4" role="columnheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 508px;"><div class="TableCellContent SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW153915742 BCX4" paraid="1739462259" paraeid="{548fed22-a656-4c6e-b64a-eb608c0e308d}{40}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Windows, Linux, macOS</span></span><span class="EOP SCXW153915742 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW153915742 BCX4" role="row" aria-rowindex="2" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW153915742 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 114px;"><div class="TableCellContent SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW153915742 BCX4" paraid="1181772621" paraeid="{548fed22-a656-4c6e-b64a-eb608c0e308d}{48}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Category</span></span><span class="EOP SCXW153915742 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW153915742 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 508px;"><div class="TableCellContent SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW153915742 BCX4" paraid="1641101643" paraeid="{548fed22-a656-4c6e-b64a-eb608c0e308d}{55}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Package Content Abuse</span></span><span class="EOP SCXW153915742 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW153915742 BCX4" role="row" aria-rowindex="3" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW153915742 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 114px;"><div class="TableCellContent SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW153915742 BCX4" paraid="1438059026" paraeid="{548fed22-a656-4c6e-b64a-eb608c0e308d}{63}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Persistence</span></span><span class="EOP SCXW153915742 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW153915742 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 508px;"><div class="TableCellContent SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW153915742 BCX4" paraid="1779056617" paraeid="{548fed22-a656-4c6e-b64a-eb608c0e308d}{70}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Conditional (fires when victim invokes the hijacked command)</span></span><span class="EOP SCXW153915742 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW153915742 BCX4" role="row" aria-rowindex="4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW153915742 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 114px;"><div class="TableCellContent SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW153915742 BCX4" paraid="1741446770" paraeid="{548fed22-a656-4c6e-b64a-eb608c0e308d}{78}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Build</span></span><span class="EOP SCXW153915742 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW153915742 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 508px;"><div class="TableCellContent SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW153915742 BCX4" paraid="642792178" paraeid="{548fed22-a656-4c6e-b64a-eb608c0e308d}{85}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">setup.py, </span><span class="NormalTextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">pyproject.toml</span></span><span class="EOP SCXW153915742 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW153915742 BCX4" role="row" aria-rowindex="5" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol LastRow SCXW153915742 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 114px;"><div class="TableCellContent SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW153915742 BCX4" paraid="1463765225" paraeid="{548fed22-a656-4c6e-b64a-eb608c0e308d}{93}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Distributions</span></span><span class="EOP SCXW153915742 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol LastRow SCXW153915742 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 508px;"><div class="TableCellContent SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW153915742 BCX4" paraid="836568029" paraeid="{548fed22-a656-4c6e-b64a-eb608c0e308d}{100}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">sdist</span><span class="NormalTextRun SCXW153915742 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">, wheel</span></span><span class="EOP SCXW153915742 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p></p><p>Python packages can declare entry points for their execution, which leads to the creation of a specific binary in the binary/scripts folder of the given environment. Whenever its alias is invoked, the corresponding binary is executed. In a naming conflict, the binary which has a higher ranking on the search path gets executed. The impact and scope of this technique depend on the target Python deployment. Virtual environments are vulnerable only when activated in a shell session, while system-wide environments may invoke the infected binary at any time. The operating system version and Python installation path can also affect search-order behavior.&#xA0;</p><p>Adversaries can leverage this feature to hijack legitimate binaries. For instance, entry point declaration using a <code>netstat</code> alias can replace the execution of the legitimate <code>netstat</code> binary, due to being in a higher rank in search order. If adversaries manage to declare such an entry point in their package, they can re-route the execution of <code>netstat</code> to a binary they have control over. While executing the legitimate binary in the background, they can also include their malicious payload in between. Different research has <a href="https://checkmarx.com/blog/this-new-supply-chain-attack-technique-can-trojanize-all-your-cli-commands/" rel="noreferrer noopener"><u>reported</u></a> on this technique previously.&#xA0;</p><p>In Figure 8, &#x201C;setup.py&#x201D; creates an entry point named <code>netstat</code>, executing the <code>main</code> function of the <code>cli</code> module within the package.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-18-figure-8.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="919" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-18-figure-8.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-18-figure-8.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-18-figure-8.png 1430w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure 8. &#x201C;setup.py&#x201D; hijacking legitimate </span><code spellcheck="false" style="white-space: pre-wrap;"><span>netstat</span></code><span style="white-space: pre-wrap;"> binary.</span></figcaption></figure><p>The same technique can be achieved through the &#x201C;pyproject.toml&#x201D; file as shown in Figure 9. Under the <code>project.scripts</code> section, the <code>netstat</code> entry point is declared to use the <code>main</code> function of <code>cli</code> module.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-19-figure-9.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="886" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-19-figure-9.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-19-figure-9.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-19-figure-9.png 1430w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure 9. &#x201C;pyproject.toml&#x201D; hijacking legitimate </span><code spellcheck="false" style="white-space: pre-wrap;"><span>netstat</span></code><span style="white-space: pre-wrap;"> binary.&#xA0;</span></figcaption></figure><p>After installing the malicious package, each <code>netstat</code> execution from the given Python environment will execute the malicious payload, creating conditional persistence on the victim endpoint.</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-20-figure-10.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="394" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-20-figure-10.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-20-figure-10.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-20-figure-10.png 1430w" sizes="(min-width: 720px) 720px"></figure><h3 id="overriding-the-content-of-a-legitimate-package">Overriding the content of a legitimate package&#xA0;</h3>
<!--kg-card-begin: html-->
<table class="Table Ltr TableWordWrap SCXW98521121 BCX4" border="1" dir="ltr" data-tablestyle="MsoNormalTable" data-tablelook="1184" aria-rowcount="5" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; table-layout: fixed; width: 1px; border-collapse: collapse; empty-cells: show; position: relative; overflow: visible; background: none; border-spacing: 0px;"><tbody class="SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text;"><tr class="TableRow SCXW98521121 BCX4" role="row" aria-rowindex="1" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstRow FirstCol SCXW98521121 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 118px;"><div class="TableCellContent SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW98521121 BCX4" paraid="1622982720" paraeid="{7d17daa5-5fa4-4520-ab6b-9bec2fcbcb38}{108}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">OS</span></span><span class="EOP SCXW98521121 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="FirstRow LastCol SCXW98521121 BCX4" role="columnheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 504px;"><div class="TableCellContent SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW98521121 BCX4" paraid="1143491888" paraeid="{7d17daa5-5fa4-4520-ab6b-9bec2fcbcb38}{115}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Windows, Linux, macOS</span></span><span class="EOP SCXW98521121 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW98521121 BCX4" role="row" aria-rowindex="2" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW98521121 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 118px;"><div class="TableCellContent SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW98521121 BCX4" paraid="569323503" paraeid="{7d17daa5-5fa4-4520-ab6b-9bec2fcbcb38}{123}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Category</span></span><span class="EOP SCXW98521121 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW98521121 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 504px;"><div class="TableCellContent SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW98521121 BCX4" paraid="1880007958" paraeid="{7d17daa5-5fa4-4520-ab6b-9bec2fcbcb38}{130}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Package Content Abuse</span></span><span class="EOP SCXW98521121 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW98521121 BCX4" role="row" aria-rowindex="3" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW98521121 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 118px;"><div class="TableCellContent SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW98521121 BCX4" paraid="1024216375" paraeid="{7d17daa5-5fa4-4520-ab6b-9bec2fcbcb38}{138}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Persistence</span></span><span class="EOP SCXW98521121 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW98521121 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 504px;"><div class="TableCellContent SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW98521121 BCX4" paraid="469433726" paraeid="{7d17daa5-5fa4-4520-ab6b-9bec2fcbcb38}{145}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Conditional (fires when victim calls the overridden function)</span></span><span class="EOP SCXW98521121 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW98521121 BCX4" role="row" aria-rowindex="4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol SCXW98521121 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 118px;"><div class="TableCellContent SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW98521121 BCX4" paraid="756487160" paraeid="{7d17daa5-5fa4-4520-ab6b-9bec2fcbcb38}{153}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Build</span></span><span class="EOP SCXW98521121 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol SCXW98521121 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 504px;"><div class="TableCellContent SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW98521121 BCX4" paraid="1768278883" paraeid="{7d17daa5-5fa4-4520-ab6b-9bec2fcbcb38}{160}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">setup.py, </span><span class="NormalTextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">pyproject.toml</span></span><span class="EOP SCXW98521121 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr><tr class="TableRow SCXW98521121 BCX4" role="row" aria-rowindex="5" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; height: 0px;"><td class="FirstCol LastRow SCXW98521121 BCX4" role="rowheader" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 118px;"><div class="TableCellContent SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW98521121 BCX4" paraid="1859211662" paraeid="{7d17daa5-5fa4-4520-ab6b-9bec2fcbcb38}{168}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: center; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-weight: bold; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">Distributions</span></span><span class="EOP SCXW98521121 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td><td class="LastCol LastRow SCXW98521121 BCX4" data-celllook="4369" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; overflow: visible; vertical-align: middle; position: relative; background-color: transparent; background-clip: padding-box; border: 3px outset; width: 504px;"><div class="TableCellContent SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 1px; -webkit-user-select: text; overflow: visible;"><div class="OutlineElement Ltr SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; clear: both; cursor: text; overflow: visible; position: relative; direction: ltr;"><p class="Paragraph SCXW98521121 BCX4" paraid="1865589991" paraeid="{7d17daa5-5fa4-4520-ab6b-9bec2fcbcb38}{175}" style="-webkit-user-drag: none; margin: auto 0px; padding: 0px; -webkit-user-select: text; overflow-wrap: break-word; font-weight: normal; font-style: normal; vertical-align: baseline; background-color: transparent; color: windowtext; text-align: left; text-indent: 0px; -webkit-nbsp-mode: normal !important;"><span data-contrast="auto" xml:lang="EN-US" lang="EN-US" class="TextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; font-variant-ligatures: none !important; -webkit-nbsp-mode: normal !important;"><span class="NormalTextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">sdist</span><span class="NormalTextRun SCXW98521121 BCX4" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; -webkit-nbsp-mode: normal !important;">, wheel</span></span><span class="EOP SCXW98521121 BCX4" data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}" style="-webkit-user-drag: none; margin: 0px; padding: 0px; -webkit-user-select: text; font-size: 12pt; line-height: 18px; font-family: &quot;Times New Roman&quot;, &quot;Times New Roman_EmbeddedFont&quot;, &quot;Times New Roman_MSCustomFont&quot;, &quot;Times New Roman_MSFontService&quot;, serif; -webkit-nbsp-mode: normal !important;">&#xA0;</span></p></div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p></p><p>While building Python projects for distribution, the directories that will be packaged are specified, meaning that a single distribution file can contain multiple packaging directories. It is not mandatory for the project and package names to be identical &#x2014; when a project, and therefore its distribution file, is named <code>package1</code>, its package directory can be named <code>packet</code>. If you expect to upload it to PyPi, the distribution should have a unique name, but the same is not true for the package directories. This can lead to naming collisions, when different distributions use the same name for their packaging directories. When this occurs, the content of both distributions are extracted into same folder. For overlapping files and directories, directories replace the files.&#xA0;&#xA0;</p><p>This feature can be useful when trying to extend the capabilities of an existing library by adding new pipelines, backends, functions, etc. However, attackers can also leverage it to hide their payload amongst benign distributions. This makes it harder for defenders to spot and eradicate the malicious payload. Similar to other package content techniques, the use of compromised modules would trigger the execution of malicious payload, therefore leading to a conditional persistence.&#xA0;</p><p>In Figure 10, we override the legitimate <code>read_json</code> function of <code>pandas</code> library with a malicious one. We can now create a new project using a fraudulent name, that only contains &#x201C;pandas&#x201D; folder and &#x201C;__init__.py&#x201D; within.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-21-figure-10.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="754" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-21-figure-10.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-21-figure-10.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-21-figure-10.png 1430w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure 10. Manipulating the execution flow of a legitimate </span><code spellcheck="false" style="white-space: pre-wrap;"><span>read_json</span></code><span style="white-space: pre-wrap;"> function.&#xA0;</span></figcaption></figure><p>For testing purposes, we can create a script that imports and calls the <code>read_json</code> function from the <code>pandas</code> library.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-22-figure-11.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="458" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-22-figure-11.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-22-figure-11.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-22-figure-11.png 1430w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Figure 11. Using injected </span><code spellcheck="false" style="white-space: pre-wrap;"><span>read_json</span></code><span style="white-space: pre-wrap;"> function.</span></figcaption></figure><p>Once executed, our altered function will be executed besides the original one:</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-23.png" class="kg-image" alt="The serpent&#x2019;s tongue: Luring the Python out of its den" loading="lazy" width="1430" height="458" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/07/carbon-23.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/07/carbon-23.png 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/carbon-23.png 1430w" sizes="(min-width: 720px) 720px"></figure><h2 id="defensive-measures">Defensive measures&#xA0;</h2><p>Securing a Python environment against malicious packages requires a layered defense strategy that combines automated auditing, strict dependency management, and proactive behavioral analysis. While effective individually, no single technique is resilient against breaches and compromises alone. The stages of a package lifecycle demand a complete approach. The following measures are all applicable for the techniques discussed previously.&#xA0;</p><h3 id="1-threat-intelligence-and-scanning">1. Threat intelligence and scanning&#xA0;</h3><p>Intelligence generation and consumption is one of the fundamental elements of cybersecurity, and Python packages are no different in that regard. Regularly auditing installed packages is the first line of defense against known security flaws. It begets additional indicators, which can be contributed back to community as a fresh threat intelligence.&#xA0;</p><ul><li><a href="https://pypi.org/project/pip-audit/" rel="noreferrer noopener"><u>pip-audit:</u></a> This is the official tool for scanning Python environments for packages with known vulnerabilities. It uses the Python Packaging Advisory Database to identify risks and can be integrated into CI/CD pipelines to break builds if a vulnerability is detected.&#xA0;</li><li>Automated Patching: Tools like <code>pip-audit --fix</code> can automatically upgrade vulnerable dependencies to the minimum safe version, reducing the manual effort required for remediation.&#xA0;</li><li>Yara rule scanning can be utilized to identify known malicious packages.&#xA0;</li><li>Abstract-Syntax Tree (AST) scanning turns code strings into a tree object that can be utilized to analyze function names, variables and imports for malicious behaviors.&#xA0;</li></ul><h3 id="2-dependency-pinning-and-integrity">2. Dependency pinning and integrity&#xA0;</h3><p>To prevent &quot;dependency drift&quot; or tampering, developers should ensure that every installation is reproducible and verified. Besides providing deployment stability, it prevents further spreading of the malicious packages by keeping users in stable versions.&#xA0;</p><ul><li>Lock Files: Use lock files such as &#x201C;uv.lock&#x201D;, &#x201C;poetry.lock&#x201D;, or &#x201C;Pipfile.lock&#x201D; to pin the exact versions of all transitive dependencies.&#xA0;</li><li>Cryptographic Hashes: <a href="https://bernat.tech/posts/securing-python-supply-chain/" rel="noreferrer noopener"><u>Always include hashes</u></a> in requirement files or lock files. This ensures that the package content downloaded from a repository matches the version originally vetted by the developer, preventing attackers from swapping files on the server.&#xA0;</li></ul><h3 id="3-environment-and-installation-controls">3. Environment and installation controls&#xA0;</h3><p>Controlling where, when, and how packages are installed can prevent the immediate execution of zero-day malicious payloads. They minimize the impact of malicious packages by slowing down the gains of the adversary.&#xA0;</p><ul><li>Dependency Cooldowns: The <a href="https://docs.astral.sh/uv/reference/cli/#uv-run--exclude-newer" rel="noreferrer noopener"><u>uv tool</u></a> offers an exclude-newer feature that ignores any package version published after a specific date or within a recent window, such as the last seven days. This &quot;cooldown&quot; period allows the security community time to identify and remove malicious uploads before they reach your environment.&#xA0;</li><li>Isolated Build Environments: Never build or install untrusted packages on a local workstation with sensitive access. Use ephemeral containers, virtual environments or isolated runners for all installation and build tasks to minimize the risk of a persistent foothold.&#xA0;</li></ul><h3 id="4-visibility-and-advanced-tooling">4. Visibility and advanced tooling&#xA0;</h3><p>Over time, cybersecurity is proven to become a communal effort. Individual initiatives such as vulnerability scanning may not be enough to catch sophisticated techniques. Providing and maintaining visibility across development helps engaging more responders in case of a compromise.&#xA0;</p><ul><li>Software Bill of Materials (SBOM): Generating an SBOM using standards like CycloneDX provides a comprehensive inventory of every component in your software. This allows security teams to respond within minutes when a new compromise is announced in a popular library.&#xA0;</li><li>Trusted Publishing: Maintainers should adopt OpenID Connect (OIDC) for &quot;Trusted Publishing&quot; on PyPI. This eliminates the need for long-lived API tokens and reduces the risk of account takeovers through credential theft.&#xA0;</li></ul>]]></content:encoded></item><item><title><![CDATA[WolfSSL, GeoVision, VTK vulnerabilities]]></title><description><![CDATA[<p>Cisco Talos&#x2019; Vulnerability Discovery &amp; Research team recently disclosed three vulnerabilities in WolfSSF, fourteen in GeoVision, and one vulnerability in VTK-DICOM.</p><p>The vulnerabilities mentioned in this blog post have been patched by their respective vendors, in adherence to<a href="https://sec.cloudapps.cisco.com/security/center/resources/vendor_vulnerability_policy.html"><u> Cisco&#x2019;s third-party vulnerability disclosure policy</u></a>.&#xA0;</p><p>For</p>]]></description><link>https://blog.talosintelligence.com/wolfssl-vulnerabilities/</link><guid isPermaLink="false">6a4bad178287de00015bb3d1</guid><category><![CDATA[Vulnerability Roundup]]></category><dc:creator><![CDATA[Kri Dontje]]></dc:creator><pubDate>Thu, 09 Jul 2026 18:52:29 GMT</pubDate><media:content url="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/vuln_roundup.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/vuln_roundup.jpg" alt="WolfSSL, GeoVision, VTK vulnerabilities"><p>Cisco Talos&#x2019; Vulnerability Discovery &amp; Research team recently disclosed three vulnerabilities in WolfSSF, fourteen in GeoVision, and one vulnerability in VTK-DICOM.</p><p>The vulnerabilities mentioned in this blog post have been patched by their respective vendors, in adherence to<a href="https://sec.cloudapps.cisco.com/security/center/resources/vendor_vulnerability_policy.html"><u> Cisco&#x2019;s third-party vulnerability disclosure policy</u></a>.&#xA0;</p><p>For Snort coverage that can detect the exploitation of these vulnerabilities, download the latest rule sets from<a href="https://snort.org/"><u> Snort.org</u></a>, and our latest Vulnerability Advisories are always posted on<a href="https://talosintelligence.com/vulnerability_reports"><u> Talos Intelligence&#x2019;s website</u></a>.</p><h2 id="wolfssl-vulnerabilities"><strong>WolfSSL vulnerabilities</strong></h2><p><em>Discovered by Ankur Tyagi of Cisco Talos.</em></p><p>WolfSSL aims to provide &quot;lightweight and embedded security solutions&quot; for both individual and business needs. WolfSSL is an open-source product to provide secure data transfer. </p><p>Talos discovered two improper input validation vulnerabilities (<a href="https://talosintelligence.com/vulnerability_reports/TALOS-2026-2409" rel="noreferrer">TALOS-2026-2409</a> (CVE-2026-28739) and <a href="https://talosintelligence.com/vulnerability_reports/TALOS-2026-2410" rel="noreferrer">TALOS-2026-2410</a> (CVE-2026-25106)) and one integer underflow vulnerability (<a href="https://talosintelligence.com/vulnerability_reports/TALOS-2026-2408" rel="noreferrer">TALOS-2026-2408</a> (CVE-2026-33091)) in WolfSSL. </p><h2 id="geovision-vulnerabilities"><strong>GeoVision vulnerabilities</strong></h2><p><em>Discovered by Philippe Laulheret of Cisco Talos.</em></p><p>GeoVision specializes in security technologies, including cameras and monitoring solutions, access control, and machine-identification.</p><p>Talos released 14 advisories for GeoVision vulnerabilities, covering 37 CVEs: </p><ul><li><a href="https://talosintelligence.com/vulnerability_reports/TALOS-2026-2411" rel="noreferrer">TALOS-2026-2411</a> (CVE-2026-12488) memory corruption vulnerabilities</li><li><a href="https://talosintelligence.com/vulnerability_reports/TALOS-2026-2379" rel="noreferrer">TALOS-2026-2379</a> (CVE-2026-12486, CVE-2026-12849, CVE-2026-12850, CVE-2026-12851) OS command injection vulnerabilities</li><li><a href="https://talosintelligence.com/vulnerability_reports/TALOS-2026-2377" rel="noreferrer">TALOS-2026-2377</a> (CVE-2026-12485, CVE-2026-12846, CVE-2026-12847, CVE-2026-12848) buffer overflow vulnerabilities</li><li><a href="https://talosintelligence.com/vulnerability_reports/TALOS-2026-2369" rel="noreferrer">TALOS-2026-2369</a> (CVE-2026-42370) stack overflow vulnerability </li><li><a href="https://talosintelligence.com/vulnerability_reports/TALOS-2026-2333" rel="noreferrer">TALOS-2026-2333</a> (CVE-2026-7372, CVE-2026-42369) stack overflow vulnerabilities</li><li><a href="https://talosintelligence.com/vulnerability_reports/TALOS-2026-2329" rel="noreferrer">TALOS-2026-2329</a> (CVE-2026-42368) privilege escalation vulnerability</li><li><a href="https://talosintelligence.com/vulnerability_reports/TALOS-2026-2328" rel="noreferrer">TALOS-2026-2328</a> (CVE-2026-42367)  privilege escalation vulnerability</li><li><a href="https://talosintelligence.com/vulnerability_reports/TALOS-2026-2327" rel="noreferrer">TALOS-2026-2327</a> (CVE-2026-7371, CVE-2026-42366) reflected cross-site scripting (XSS) vulnerabilities</li><li><a href="https://talosintelligence.com/vulnerability_reports/TALOS-2026-2326" rel="noreferrer">TALOS-2025-2326</a> (CVE-2026-42364) OS command injection vulnerability</li><li><a href="https://talosintelligence.com/vulnerability_reports/TALOS-2026-2332" rel="noreferrer">TALOS-2025-2332</a> (CVE-2026-42365) guessable session cookie vulnerability</li><li><a href="https://talosintelligence.com/vulnerability_reports/TALOS-2026-2322" rel="noreferrer">TALOS-2025-2322</a> (CVE-2026-7161) insufficient encryption vulnerability</li><li><a href="https://talosintelligence.com/vulnerability_reports/TALOS-2026-2375" rel="noreferrer">TALOS-2026-2375</a> (CVE-2026-57273, CVE-2026-57274, CVE-2026-57275, CVE-2026-57276, CVE-2026-57277, CVE-2026-57278) stack-based buffer overflow vulnerabilities</li><li><a href="https://talosintelligence.com/vulnerability_reports/TALOS-2026-2373" rel="noreferrer">TALOS-2026-2373</a> (CVE-2026-13131, CVE-2026-13132, CVE-2026-57264, CVE-2026-57265, CVE-2026-57266, CVE-2026-57267, CVE-2026-57268, CVE-2026-57269, CVE-2026-57270, CVE-2026-57271, CVE-2026-57272) out-of-bounds read vulnerabilities</li><li><a href="https://talosintelligence.com/vulnerability_reports/TALOS-2026-2370" rel="noreferrer">TALOS-2026-2370</a> (CVE-2026-13125) lack of authentication vulnerability</li></ul><h2 id="vtk-dicom-vulnerability"><strong>VTK-DICOM vulnerability</strong></h2><p><em>Discovered by Emmanuel Tacheau of Cisco Talos.</em></p><p>The Virtualization Toolkit (VTK) is an open source software solution for handling scientific data, for use in tools for 3D rendering. The VTK-DICOM API is specifically to allow VTK users to parse Digital Imaging and Communications in Medicine (DICOM) medical data. </p><p>Talos found one vulnerability in VTK-DICOM, <a href="https://talosintelligence.com/vulnerability_reports/TALOS-2026-2366" rel="noreferrer">TALOS-2026-2366</a> (CVE-2026-22879), which is a heap-based buffer overflow vulnerability.<br></p>]]></content:encoded></item><item><title><![CDATA[Winning 54% of the time]]></title><description><![CDATA[With Wimbledon's help, Hazel argues against the popular myth that "Attackers only need to be right once, but defenders need to be right 100% of the time."]]></description><link>https://blog.talosintelligence.com/winning-54-of-the-time/</link><guid isPermaLink="false">6a4e9186501b2f00010617d0</guid><category><![CDATA[Threat Source newsletter]]></category><dc:creator><![CDATA[Hazel Burton]]></dc:creator><pubDate>Thu, 09 Jul 2026 18:00:06 GMT</pubDate><media:content url="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/threat_source.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/07/threat_source.jpg" alt="Winning 54% of the time"><p>Welcome to this week&#x2019;s Threat Source newsletter.&#xA0;</p><p>There&#x2019;s a fairly clich&#xE9; phrase in cybersecurity that I&#x2019;m sure our audience is familiar with: Attackers only need to be right once, whereas defenders need to be right 100% of the time.&#xA0;&#xA0;</p><p>I guess it captures the asymmetry of this industry, but I&#x2019;ve never been entirely comfortable with the phrase because it assumes cybersecurity is a game of perfection. One mistake and it&apos;s over.&#xA0;&#xA0;</p><p>I&#x2019;ve been watching a lot of Wimbledon this week, as I have done since childhood. In fact, I believe my first words were, &#x201C;C&#x2019;mon Tim!&#x201D; (For our non-U.K. audience, I&#x2019;m referring to tennis player Tim Henman, who made four Wimbledon semi-finals in the late 90s and early 2000s and has a hill in the Wimbledon grounds named after him).&#xA0;&#xA0;</p><p>Of the &#x201C;big three&#x201D; (or the &#x201C;big four&#x201D; if you&#x2019;re Scottish), my favourite was always Rafa Nadal, but I have to admit there&#x2019;s no one who could deliver a one-handed backhand quite like Roger Federer. I bet that when he swats at a fly, the fly apologises and claps its wings.&#xA0;</p><p>As I saw him sitting in the Royal Box entirely on his own this week, watching tennis out of pure love of the game while everyone else scoffed their strawberries and cream in the comfort of hospitality, I remembered the commencement speech he gave at Dartmouth a couple of years ago. He told the students that, across his entire career, he won 80% of his matches.&#xA0;&#xA0;</p><p>But of all the total points he played, he won 54% of them.&#xA0;&#xA0;</p><p>Tennis is a long game (no one can tell you that more than Novak Djokovic and Felix Auger Aliassime who just played the longest quarter final in Wimbledon&#x2019;s history last night). And, mathematically in tennis, you can lose more points and overall games than your opponent and still win the match. <em>Which</em> point you win matters more than the total amount of points you win.&#xA0;&#xA0;</p><p>If you go to the <a href="https://www.wimbledon.com/en_GB/scores/slamtracker/1202" rel="noreferrer noopener"><u>IBM SlamTracker</u></a> right now, you&#x2019;ll see all sorts of stats around when players choose to attack, how often they successfully convert those attacking positions into points, and how often they win points they looked destined to lose (the &#x201C;steal&#x201D; score).&#xA0;</p><p>Tennis is hundreds of small decisions: When to attack, when to defend, when to be patient, when to let the point develop. Not all of those decisions pan out because, well, you&#x2019;re playing against an opponent who&#x2019;s also making decisions within the point&#x2026; and not a brick wall.&#xA0;</p><p>In the SOC, it&#x2019;s also about making thousands of judgement calls, using whatever hand you&#x2019;re dealt. And with more context, you&#x2019;re able to know your environment better and make better decisions. You can test more assumptions and follow a hypothesis that might lead somewhere, or nowhere at all.&#xA0;</p><p>Because that&#x2019;s the job, and perfection is a myth.&#xA0;</p><h2 id="the-one-big-thing">The one big thing&#xA0;</h2><p>Cisco Talos&#x2019; <a href="https://blog.talosintelligence.com/uat-7810/" rel="noreferrer noopener"><u>latest findings</u></a> on the China-nexus threat actor UAT-7810 shows they are expanding their Operational Relay Box (ORB) networks with a fresh suite of custom malware. The group exploits known vulnerabilities in unpatched Ruckus and ASUS routers to deploy new tools, including the upgraded &quot;LONGLEASH&quot; and &quot;DOGLEASH&quot; backdoors. UAT-7810 builds these covert networks to provide infrastructure for other APT groups to launch attacks against high-value targets.&#xA0;</p><h3 id="why-do-i-care">Why do I care?&#xA0;</h3><p>ORB networks create a massive blind spot. They allow secondary threat actors to mask their origins and route malicious traffic through seemingly innocuous nodes. By compromising edge devices like wireless routers, UAT-7810 builds a highly evasive, decentralized proxy network that easily bypasses traditional perimeter defenses. The active development of sophisticated, multi-platform tools like LONGLEASH shows this group is heavily investing in making their infrastructure incredibly resilient and hard to dismantle.&#xA0;</p><h3 id="so-now-what">So now what?&#xA0;</h3><p>Because UAT-7810 relies on exploiting n-day vulnerabilities, defenders must ensure all edge devices, particularly Ruckus and ASUS routers, are fully patched. Monitor network traffic for unusual proxying behavior or unauthorized connections on devices that typically lack complex services. The <a href="https://blog.talosintelligence.com/uat-7810/" rel="noreferrer noopener"><u>blog post</u></a> has a complete list of IOCs to help detect and block this malware suite.&#xA0;</p><h2 id="top-security-headlines-of-the-week">Top security headlines of the week&#xA0;</h2><p><strong>The &#x201C;first&#x201D; AI-run ransomware attack still needed a human</strong>&#xA0;<br>Researchers at cloud security firm Sysdig said they&#x2019;d documented the first known case of &#x201C;agentic ransomware.&#x201D; (The encryption was non-reversible &#x2014;&#xA0;essentially a wiper, not ransomware.) A human provided compromised credentials, provisioned the command-and-control server, the staging server used for the stolen data, chose a victim, and more. (<a href="https://techcrunch.com/2026/07/06/the-first-ai-run-ransomware-attack-still-needed-a-human/" rel="noreferrer noopener"><u>TechCrunch</u></a>)&#xA0;</p><p><strong>AirDrop and Quick Share flaws let nearby attackers trigger crashes and bypass checks </strong>&#xA0;<br>Two researchers have found six security flaws in&#xA0;AirDrop&#xA0;and&#xA0;Quick Share. An attacker within wireless range, with just a laptop and no prior connection, can crash the sharing service on a Mac or iPhone set to receive from anyone, with no tap or prompt. (<a href="https://thehackernews.com/2026/06/airdrop-and-quick-share-flaws-let.html" rel="noreferrer noopener"><u>The Hacker News</u></a>)&#xA0;</p><p><strong>Hidden backdoor in Tenda router firmware grants admin access</strong>&#xA0;<br>A hidden authentication backdoor has been found in multiple Tenda router firmware versions, potentially allowing an attacker to gain administrative access to the device&apos;s web management panel. According to the CERT Coordination Center, the issue remains unfixed because the maker couldn&apos;t be reached. (<a href="https://www.bleepingcomputer.com/news/security/hidden-backdoor-in-tenda-router-firmware-grants-admin-access/" rel="noreferrer noopener"><u>BleepingComputer</u></a>)&#xA0;</p><p><strong>State IDs for AI agents: Will Estonia set a precedent?</strong>&#xA0;<br>Estonia&apos;s government will soon assign official government ID numbers to AI agents. The point is to enable organizations and individuals to use AI when engaging government systems, but in a way that&apos;s limited and auditable. (<a href="https://www.darkreading.com/cybersecurity-operations/state-ids-ai-agents-estonia" rel="noreferrer noopener"><u>Dark Reading</u></a>)&#xA0;</p><h2 id="can%E2%80%99t-get-enough-talos">Can&#x2019;t get enough Talos?&#xA0;</h2><p><a href="https://www.buzzsprout.com/2033817/episodes/19458005" rel="noreferrer noopener"><strong><u>Space pirates, Living Off Trusted Services, and Bill declares food war</u></strong></a><strong> </strong>&#xA0;<br>The team discusses how Living Off Trusted Services (LOTS) differs from Living Off the Land (LOTL) (and Lord of the Rings (LOTR]), why trusted services create new detection challenges, and what defenders should be monitoring.&#xA0;</p><p><a href="https://blog.talosintelligence.com/artoken-inside-an-eviltokens-affiliate-panel-targeting-microsoft-365/" rel="noreferrer noopener"><strong><u>ARToken: Inside an EvilTokens affiliate panel targeting Microsoft 365</u></strong></a>&#xA0;<br>Talos has identified &quot;ARToken,&quot; a phishing-as-a-service platform that targets Microsoft 365. The ARToken panel exposes 80+ API endpoints for device code phishing, Primary Refresh Token persistence, email access, BEC operations, and SharePoint exfiltration.&#xA0;</p><p><a href="https://blog.talosintelligence.com/martin-lee-running-through-the-arctic-and-the-threat-landscape/" rel="noreferrer noopener"><strong><u>Martin Lee: Running through the Arctic (and the threat landscape)</u></strong></a>&#xA0;<br>Ever wonder how someone goes from studying human viruses to leading cybersecurity teams? How about running through the Arctic for fun? &#xA0;In this Humans of Talos you get to hear from Martin and&#xA0;that&#x2019;s&#xA0;ALWAYS worth pulling up a seat.&#xA0;</p><h2 id="upcoming-events-where-you-can-find-talos">Upcoming events where you can find Talos&#xA0;</h2><ul><li><a href="https://blackhat.com/us-26/" rel="noreferrer noopener"><u>Black Hat USA</u></a> (Aug. 1 &#x2013; 6) Las Vegas, NV&#xA0;</li><li><a href="https://defcon.org/html/defcon-34/dc-34-index.html" rel="noreferrer noopener"><u>DEF CON 34</u></a> (Aug. 6 &#x2013; 9) Las Vegas, NV&#xA0;</li></ul><h2 id="most-prevalent-malware-files-from-talos-telemetry-over-the-past-week">Most prevalent malware files from Talos telemetry over the past week&#xA0;</h2><p><strong>SHA256: 9f1f11a708d393e0a4109ae189bc64f1f3e312653dcf317a2bd406f18ffcc507</strong> &#xA0;<br>MD5: 2915b3f8b703eb744fc54c81f4a9c67f&#xA0;<br>Talos Rep: <a href="https://talosintelligence.com/talos_file_reputation?s=9f1f11a708d393e0a4109ae189bc64f1f3e312653dcf317a2bd406f18ffcc507" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=9f1f11a708d393e0a4109ae189bc64f1f3e312653dcf317a2bd406f18ffcc507</u></a>&#xA0;<br>Example Filename: VID001.exe&#xA0;<br>Detection Name: Win.Worm.Coinminer::1201**&#xA0;</p><p><strong>SHA256: 621c6d42409e8aa423684827b4375a35684c71c600f2dd9101f235e8ec633488</strong>&#xA0;<br>MD5: 9b512ba139304c247ddd3d2c4b9179fd&#xA0;<br>Talos Rep: <a href="https://talosintelligence.com/talos_file_reputation?s=621c6d42409e8aa423684827b4375a35684c71c600f2dd9101f235e8ec633488" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=621c6d42409e8aa423684827b4375a35684c71c600f2dd9101f235e8ec633488</u></a>&#xA0;<br>Example Filename: 9b512ba139304c247ddd3d2c4b9179fd.exe&#xA0;<br>Detection Name: W32.HEUR:Attribute.28iy.1201&#xA0;</p><p><strong>SHA256: 9896a6fcb9bb5ac1ec5297b4a65be3f647589adf7c37b45f3f7466decd6a4a7f</strong>&#xA0;<br>MD5: 38de5b216c33833af710e88f7f64fc98&#xA0;<br>Talos Rep: <a href="https://talosintelligence.com/talos_file_reputation?s=9896a6fcb9bb5ac1ec5297b4a65be3f647589adf7c37b45f3f7466decd6a4a7f" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=9896a6fcb9bb5ac1ec5297b4a65be3f647589adf7c37b45f3f7466decd6a4a7f</u></a>&#xA0;<br>Example Filename: SECOH-QAD.exe &#xA0;<br>Detection Name: Win.Tool.Procpatcher::1201&#xA0;</p><p><strong>SHA256: afc8a00883a4ea07df2dc1d4ed02f8a23b35c9456413b438a2d9ce3ae5076638</strong>&#xA0;<br>MD5: cc4d231df34e57f59eb970353c7d9de2&#xA0;<br>Talos Rep: <a href="https://talosintelligence.com/talos_file_reputation?s=afc8a00883a4ea07df2dc1d4ed02f8a23b35c9456413b438a2d9ce3ae5076638" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=afc8a00883a4ea07df2dc1d4ed02f8a23b35c9456413b438a2d9ce3ae5076638</u></a>&#xA0;<br>Example Filename: sample.exe&#xA0;<br>Detection Name: PUA.Win.Tool.Kmsactivator::1201&#xA0;</p>]]></content:encoded></item><item><title><![CDATA[UAT-7810 continues building ORB networks using new malware]]></title><description><![CDATA[Talos’ latest findings on UAT-7810 indicate that the threat actor continues to develop their custom-made malware.]]></description><link>https://blog.talosintelligence.com/uat-7810/</link><guid isPermaLink="false">6a3950a51157ca0001c2a7db</guid><category><![CDATA[APT]]></category><category><![CDATA[malware]]></category><category><![CDATA[Cisco Talos Antivirus]]></category><category><![CDATA[Cisco Talos Malware Protection]]></category><category><![CDATA[Cisco Talos Network Intrusion Prevention]]></category><category><![CDATA[Cisco Talos Web Filtering]]></category><dc:creator><![CDATA[Jungsoo An]]></dc:creator><pubDate>Tue, 07 Jul 2026 10:00:05 GMT</pubDate><media:content url="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/UAT-7810.jpg" medium="image"/><content:encoded><![CDATA[<ul><li>Cisco Talos is actively tracking infrastructure and malware associated with UAT-7810, an advanced persistent threat (APT) actor responsible for maintaining and proliferating the <a href="https://securityscorecard.com/wp-content/uploads/2025/06/LapDogs-STRIKE-Report-June-2025.pdf">LapDogs</a> Operational Relay Box (ORB) network, first disclosed by SecurityScorecard in 2025.</li><li>UAT-7810 is most likely tasked with establishing Operational Relay Box (ORB) networks that can then be leveraged by associated secondary threat actors to conduct their own malicious attacks against high value targets.</li><li>Talos&#x2019; latest findings on UAT-7810 indicate that the threat actor continues to develop their custom-made malware, dubbed &#x201C;SHORTLEASH,&#x201D; with a newer version already being developed and hosted on attacker-controlled infrastructure. We track this new version of SHORTLEASH as &#x201C;LONGLEASH.&#x201D;</li><li>Furthermore, we&#x2019;ve discovered two new malware families in UAT-7810&apos;s arsenal: a C-based backdoor we track as &#x201C;DOGLEASH&#x201D; and a JAVA-based backdoor we track as &#x201C;JARLEASH.&#x201D;</li></ul><hr><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/UAT-7810.jpg" alt="UAT-7810 continues building ORB networks using new malware"><p>Talos assesses with high confidence that UAT-7810 is a China-nexus threat actor based on the infrastructure that it provides to secondary China-nexus APTs such as <a href="https://blog.talosintelligence.com/uat-5918-targets-critical-infra-in-taiwan/">UAT-5918</a>. <a href="https://securityscorecard.com/wp-content/uploads/2025/06/LapDogs-STRIKE-Report-June-2025.pdf">Open-source reporting</a> has also illustrated overlapping tooling between UAT-5918 and UAT-7810. However, at this time, Talos considers UAT-5918 and UAT-7810 separate APT actors tasked with their own set of objectives and targets.</p><p>Talos&#x2019; latest findings on UAT-7810 indicate that the threat actor continues to develop their custom-made malware dubbed &#x201C;SHORTLEASH&#x201D; with a newer version already being developed and hosted on attacker-controlled infrastructure. We track this new version of SHORTLEASH as &#x201C;LONGLEASH.&#x201D;</p><p>Talos has also discovered two more previously unknown tools in UAT-7810&apos;s arsenal:</p><ul><li>DOGLEASH: A malicious backdoor that can execute arbitrary shellcode on the compromised Linux device</li><li>LEASHTEST: A Linux binary (ELF) that is used for testing rudimentary functionality on MIPS-based embedded devices</li></ul><p>Talos&#x2019; findings also illustrate that UAT-7810 used at least four new servers to host a variety of minor variations of DOGLEASH to deploy against compromised targets. An additional JAVA-based (JAR package) backdoor that we track as &#x201C;JARLEASH&#x201D; was also deployed by UAT-7810 on at least one of the three servers for administration purposes, including file management, FTP, SFTP, and Netcat.</p><h2 id="uat-7810-exploits-n-day-vulnerabilities">UAT-7810 exploits n-day vulnerabilities</h2><p>Talos has observed UAT-7810 primarily exploit known vulnerabilities in unpatched Ruckus wireless routers, a tactic UAT-7810 has used since 2025. CVEs exploited include:</p><ul><li><a href="https://nvd.nist.gov/vuln/detail/CVE-2020-22653">CVE-2020-22653</a></li><li><a href="https://nvd.nist.gov/vuln/detail/CVE-2020-22658">CVE-2020-22658</a></li><li><a href="https://nvd.nist.gov/vuln/detail/CVE-2023-25717">CVE-2023-25717</a></li></ul><h2 id="uat-7810-infrastructure">UAT-7810 infrastructure</h2><p>Talos discovered four new servers being used by UAT-7810 to host malicious payloads for a variety of hardware platforms including MIPS, ARM, and x64. The malware hosted predominantly consists of DOGLEASH, and accompanying shell scripts are executed on compromised systems to download and execute DOGLEASH.</p><p>All three of the following IP addresses were associated with VPS instances that indicated UAT-7810 acquired and used these servers as download locations:</p><ul><li>194.233.92[.]26</li><li>217.15.160[.]247</li><li>217.15.164[.]147</li></ul><p>&#xA0;One of the IPs, &#x201C;217.15.164[.]147&#x201D;, was also used as infrastructure to conduct exploitation of ASUS&#x2019; <a href="https://blog.nicter.jp/2026/01/aicloud_vulnerability/">AiCloud Routers</a> in early 2026 &#x2014; specifically <a href="https://nvd.nist.gov/vuln/detail/CVE-2025-2492">CVE-2025-2492</a> &#x2014; indicating that UAT-7810 or an associated threat actor likely attempted to expand their ORB network to AiCloud Routers.</p><p>Additionally, &#x201C;217.15.160[.]247&#x201D; and &#x201C;217.15.164[.]147&#x201D;,&#xA0; hosted a TLS server on port 99 with the certificate fingerprint: </p>
<!--kg-card-begin: html-->
<pre>
c2ab9adaba93ff094b8f3fc37d906014d870582039d276b7bd03e6fd583d8a15
and
subject_dn = &quot;C=exploit, ST=exploit, L=exploit, O=exploit, OU=exploit, CN=exploit&quot;
</pre>
<!--kg-card-end: html-->
<p>Forensic analysis of compromised networking devices led to the discovery of a fourth IP address UAT-7810 used to host their malicious payloads: &#x201C;95.182.100[.]231&#x201D;, residing in Hong Kong.</p><h2 id="uat-7810s-malware-suite">UAT-7810&apos;s malware suite</h2><h3 id="longleash-a-new-version-of-shortleash">LONGLEASH: A new version of SHORTLEASH</h3><p>LONGLEASH is a new version of UAT-7810&apos;s previously disclosed backdoor <a href="https://securityscorecard.com/wp-content/uploads/2025/06/LapDogs-STRIKE-Report-June-2025.pdf">SHORTLEASH</a>. SHORTLEASH consisted of a backdoor capable of contacting its command and control (C2), hosting a web server, managing tunnels, and acting as both a C2 server and client. LONGLEASH, however, contains a variety of additional capabilities, indicating that UAT-7810 is actively developing it for use against their targets.</p><p>LONGLEASH is built off the same codebase as SHORTLEASH, with both tools being internally named &#x201C;ff-agent&#x201D;. The LONGLEASH variant compiled for MIPS processors is built on the asynchronous version of the Boost library (<a href="https://www.boost.org/doc/libs/latest/doc/html/boost_asio.html">Boost.Asio</a>) to minimize the blocking time and maximize the performance of the network.</p><p>The internal name for the LONGLEASH project is &#x201C;nz1.0&#x201D; and it has the following major components:</p><ul><li>Base: Contains the implant&#x2019;s logging and utilities, such as routines for Base58 and Base64 encoding and decoding.</li><li>Executor: Supports several capabilities, including the main proxying functions, for setting up the following channels:<ul><li>Reverse shell to C2</li><li>Proxy servers for HTTP, DNS, SOCKS, TCP, ICMP, and UDP</li><li>Packet redirection for traffic based on TCP, UDP, and HTTP</li><li>SMTP server and client</li></ul></li></ul><p>The other major executor modules support managing of network connections to other servers, including TLS and public key infrastructure, managing clients connected to the implant, sockets and URIs.</p><p>&#xA0;The executor is also tasked with authorization of clients, routing of the messages through the proxy network, and setting and management of basic network tunnels.</p><p>&#xA0;Finally, the executor contains functionality to remove the implant and all traces from the server if a suspicious connection or tampering is detected.</p><ul><li>Core: Provides basic authorization and node identification services, HTTP encoding and utilities, processing of protocol buffer (protobuf) encoded messages, basic SHA checksum functions, task management, and basic security.</li></ul><p>The implant contains the User-Agent string &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.95 Safari/537.36&quot; which may allow it to hide within legitimate traffic purporting to be an instance of the Windows Chrome version 122.</p><p>&#xA0;Apart from the Boost.Asio, the implant contains code from at least two open-source libraries: Nanopb, used for processing protobuf messages, and <a href="https://github.com/Mbed-TLS/mbedtls">MbedTLS</a>, for establishing TLS, proxying TLS encrypted communications, and managing x509 certificates for the network. The implant does not use a standard libc library but a small <a href="https://musl.libc.org/">musl</a> library libc that implements C functions on top of Linux syscalls.</p><p>LONGLEASH also has the capability to act as an intermediate C2 server. It can obtain commands and data from the original C2 and forward to its peers.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-f3d86158-a45b-4a25-9111-5f91b3cb692f.png" class="kg-image" alt="UAT-7810 continues building ORB networks using new malware" loading="lazy" width="198" height="675"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 1. LONGLEASH&#x2019;s functional components.</em></i></figcaption></figure><h3 id="dogleash-the-passive-backdoor">DOGLEASH: The passive backdoor</h3><p>Talos also discovered a previously unknown backdoor, developed and operated by UAT-7810, that we track as DOGLEASH. After compromising a networking device, UAT-7810 deploys a shell script that:</p><ol><li>Downloads DOGLEASH.</li><li>Adds iptables rules to allow TCP traffic to a specific port, on which DOGLEASH binds and listens.</li><li>Executes DOGLEASH on the device.</li></ol><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-3accab8d-7f20-4e49-ab54-1379fc34dcf9.png" class="kg-image" alt="UAT-7810 continues building ORB networks using new malware" loading="lazy" width="996" height="451" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/data-src-image-3accab8d-7f20-4e49-ab54-1379fc34dcf9.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-3accab8d-7f20-4e49-ab54-1379fc34dcf9.png 996w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 2. Startup script for SHORTLEASH.</em></i></figcaption></figure><p>DOGLEASH will bind and listen for an incoming request on a local hardcoded port. Any TCP data received is then decoded using a hardcoded password string. Based on the command code and accompanying data received, it creates a new thread in the process and carries out a specific action:</p>
<!--kg-card-begin: html-->
<table class="MsoTableGrid" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;mso-border-alt:solid windowtext .75pt;
 mso-yfti-tbllook:1696;mso-padding-alt:0in 5.4pt 0in 5.4pt">
 <tbody><tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;height:14.25pt">
  <td width="250" style="width:187.5pt;border-top:windowtext;border-left:windowtext;
  border-bottom:black;mso-border-bottom-themecolor:text1;border-right:black;
  mso-border-right-themecolor:text1;border-style:solid;border-width:1.0pt;
  mso-border-top-alt:windowtext .75pt;mso-border-left-alt:windowtext .75pt;
  mso-border-bottom-alt:black .5pt;mso-border-bottom-themecolor:text1;
  mso-border-right-alt:black .5pt;mso-border-right-themecolor:text1;mso-border-style-alt:
  solid;padding:0in 5.25pt 0in 5.25pt;height:14.25pt">
  <p class="MsoBodyText" style="margin-top:6.0pt;margin-right:0in;margin-bottom:
  10.0pt;margin-left:0in;line-height:normal"><b>Command code</b><o:p></o:p></p>
  </td>
  <td width="412" style="width:309.0pt;border-top:solid windowtext 1.0pt;
  border-left:none;border-bottom:solid black 1.0pt;mso-border-bottom-themecolor:
  text1;border-right:solid windowtext 1.0pt;mso-border-left-alt:solid black .5pt;
  mso-border-left-themecolor:text1;mso-border-top-alt:windowtext .75pt;
  mso-border-left-alt:black .5pt;mso-border-left-themecolor:text1;mso-border-bottom-alt:
  black .5pt;mso-border-bottom-themecolor:text1;mso-border-right-alt:windowtext .75pt;
  mso-border-style-alt:solid;padding:0in 5.25pt 0in 5.25pt;height:14.25pt">
  <p class="MsoBodyText" style="margin-top:6.0pt;margin-right:0in;margin-bottom:
  10.0pt;margin-left:0in;line-height:normal"><b>Action taken</b><o:p></o:p></p>
  </td>
 </tr>
 <tr style="mso-yfti-irow:1;height:14.25pt">
  <td width="250" style="width:187.5pt;border-top:none;border-left:solid windowtext 1.0pt;
  border-bottom:solid black 1.0pt;mso-border-bottom-themecolor:text1;
  border-right:solid black 1.0pt;mso-border-right-themecolor:text1;mso-border-top-alt:
  solid black .5pt;mso-border-top-themecolor:text1;mso-border-alt:solid black .5pt;
  mso-border-themecolor:text1;mso-border-left-alt:solid windowtext .75pt;
  padding:0in 5.25pt 0in 5.25pt;height:14.25pt">
  <p class="MsoBodyText" style="margin-top:6.0pt;margin-right:0in;margin-bottom:
  10.0pt;margin-left:0in;line-height:normal">0x2268, 0x2267<o:p></o:p></p>
  </td>
  <td width="412" style="width:309.0pt;border-top:none;border-left:none;
  border-bottom:solid black 1.0pt;mso-border-bottom-themecolor:text1;
  border-right:solid windowtext 1.0pt;mso-border-top-alt:solid black .5pt;
  mso-border-top-themecolor:text1;mso-border-left-alt:solid black .5pt;
  mso-border-left-themecolor:text1;mso-border-alt:solid black .5pt;mso-border-themecolor:
  text1;mso-border-right-alt:solid windowtext .75pt;padding:0in 5.25pt 0in 5.25pt;
  height:14.25pt">
  <p class="MsoNormal" style="margin-bottom:0in;line-height:normal">Execute
  command using /bin/sh -c<o:p></o:p></p>
  </td>
 </tr>
 <tr style="mso-yfti-irow:2;height:14.25pt">
  <td width="250" style="width:187.5pt;border-top:none;border-left:solid windowtext 1.0pt;
  border-bottom:solid black 1.0pt;mso-border-bottom-themecolor:text1;
  border-right:solid black 1.0pt;mso-border-right-themecolor:text1;mso-border-top-alt:
  solid black .5pt;mso-border-top-themecolor:text1;mso-border-alt:solid black .5pt;
  mso-border-themecolor:text1;mso-border-left-alt:solid windowtext .75pt;
  padding:0in 5.25pt 0in 5.25pt;height:14.25pt">
  <p class="MsoBodyText" style="margin-top:6.0pt;margin-right:0in;margin-bottom:
  10.0pt;margin-left:0in;line-height:normal">0x2266<o:p></o:p></p>
  </td>
  <td width="412" style="width:309.0pt;border-top:none;border-left:none;
  border-bottom:solid black 1.0pt;mso-border-bottom-themecolor:text1;
  border-right:solid windowtext 1.0pt;mso-border-top-alt:solid black .5pt;
  mso-border-top-themecolor:text1;mso-border-left-alt:solid black .5pt;
  mso-border-left-themecolor:text1;mso-border-alt:solid black .5pt;mso-border-themecolor:
  text1;mso-border-right-alt:solid windowtext .75pt;padding:0in 5.25pt 0in 5.25pt;
  height:14.25pt">
  <p class="MsoBodyText" style="margin-top:6.0pt;margin-right:0in;margin-bottom:
  10.0pt;margin-left:0in;line-height:normal">Read file<o:p></o:p></p>
  </td>
 </tr>
 <tr style="mso-yfti-irow:3;height:14.25pt">
  <td width="250" style="width:187.5pt;border-top:none;border-left:solid windowtext 1.0pt;
  border-bottom:solid black 1.0pt;mso-border-bottom-themecolor:text1;
  border-right:solid black 1.0pt;mso-border-right-themecolor:text1;mso-border-top-alt:
  solid black .5pt;mso-border-top-themecolor:text1;mso-border-alt:solid black .5pt;
  mso-border-themecolor:text1;mso-border-left-alt:solid windowtext .75pt;
  padding:0in 5.25pt 0in 5.25pt;height:14.25pt">
  <p class="MsoBodyText" style="margin-top:6.0pt;margin-right:0in;margin-bottom:
  10.0pt;margin-left:0in;line-height:normal">0x2271<o:p></o:p></p>
  </td>
  <td width="412" style="width:309.0pt;border-top:none;border-left:none;
  border-bottom:solid black 1.0pt;mso-border-bottom-themecolor:text1;
  border-right:solid windowtext 1.0pt;mso-border-top-alt:solid black .5pt;
  mso-border-top-themecolor:text1;mso-border-left-alt:solid black .5pt;
  mso-border-left-themecolor:text1;mso-border-alt:solid black .5pt;mso-border-themecolor:
  text1;mso-border-right-alt:solid windowtext .75pt;padding:0in 5.25pt 0in 5.25pt;
  height:14.25pt">
  <p class="MsoBodyText" style="margin-top:6.0pt;margin-right:0in;margin-bottom:
  10.0pt;margin-left:0in;line-height:normal">Rename file to create a backup<o:p></o:p></p>
  </td>
 </tr>
 <tr style="mso-yfti-irow:4;height:14.25pt">
  <td width="250" style="width:187.5pt;border-top:none;border-left:solid windowtext 1.0pt;
  border-bottom:solid black 1.0pt;mso-border-bottom-themecolor:text1;
  border-right:solid black 1.0pt;mso-border-right-themecolor:text1;mso-border-top-alt:
  solid black .5pt;mso-border-top-themecolor:text1;mso-border-alt:solid black .5pt;
  mso-border-themecolor:text1;mso-border-left-alt:solid windowtext .75pt;
  padding:0in 5.25pt 0in 5.25pt;height:14.25pt">
  <p class="MsoBodyText" style="margin-top:6.0pt;margin-right:0in;margin-bottom:
  10.0pt;margin-left:0in;line-height:normal">0x2273, 0x2274<o:p></o:p></p>
  </td>
  <td width="412" style="width:309.0pt;border-top:none;border-left:none;
  border-bottom:solid black 1.0pt;mso-border-bottom-themecolor:text1;
  border-right:solid windowtext 1.0pt;mso-border-top-alt:solid black .5pt;
  mso-border-top-themecolor:text1;mso-border-left-alt:solid black .5pt;
  mso-border-left-themecolor:text1;mso-border-alt:solid black .5pt;mso-border-themecolor:
  text1;mso-border-right-alt:solid windowtext .75pt;padding:0in 5.25pt 0in 5.25pt;
  height:14.25pt">
  <p class="MsoBodyText" style="margin-top:6.0pt;margin-right:0in;margin-bottom:
  10.0pt;margin-left:0in;line-height:normal">Close socket listener<o:p></o:p></p>
  </td>
 </tr>
 <tr style="mso-yfti-irow:5;height:14.25pt">
  <td width="250" style="width:187.5pt;border-top:none;border-left:solid windowtext 1.0pt;
  border-bottom:solid black 1.0pt;mso-border-bottom-themecolor:text1;
  border-right:solid black 1.0pt;mso-border-right-themecolor:text1;mso-border-top-alt:
  solid black .5pt;mso-border-top-themecolor:text1;mso-border-alt:solid black .5pt;
  mso-border-themecolor:text1;mso-border-left-alt:solid windowtext .75pt;
  padding:0in 5.25pt 0in 5.25pt;height:14.25pt">
  <p class="MsoBodyText" style="margin-top:6.0pt;margin-right:0in;margin-bottom:
  10.0pt;margin-left:0in;line-height:normal">0x3450<o:p></o:p></p>
  </td>
  <td width="412" style="width:309.0pt;border-top:none;border-left:none;
  border-bottom:solid black 1.0pt;mso-border-bottom-themecolor:text1;
  border-right:solid windowtext 1.0pt;mso-border-top-alt:solid black .5pt;
  mso-border-top-themecolor:text1;mso-border-left-alt:solid black .5pt;
  mso-border-left-themecolor:text1;mso-border-alt:solid black .5pt;mso-border-themecolor:
  text1;mso-border-right-alt:solid windowtext .75pt;padding:0in 5.25pt 0in 5.25pt;
  height:14.25pt">
  <p class="MsoNormal" style="margin-bottom:0in;line-height:normal">Get OS info
  info -&gt; release, version, machine HW ID, node name<o:p></o:p></p>
  </td>
 </tr>
 <tr style="mso-yfti-irow:6;mso-yfti-lastrow:yes;height:14.25pt">
  <td width="250" style="width:187.5pt;border-top:none;border-left:solid windowtext 1.0pt;
  border-bottom:solid windowtext 1.0pt;border-right:solid black 1.0pt;
  mso-border-right-themecolor:text1;mso-border-top-alt:solid black .5pt;
  mso-border-top-themecolor:text1;mso-border-top-alt:black .5pt;mso-border-top-themecolor:
  text1;mso-border-left-alt:windowtext .75pt;mso-border-bottom-alt:windowtext .75pt;
  mso-border-right-alt:black .5pt;mso-border-right-themecolor:text1;mso-border-style-alt:
  solid;padding:0in 5.25pt 0in 5.25pt;height:14.25pt">
  <p class="MsoBodyText" style="margin-top:6.0pt;margin-right:0in;margin-bottom:
  10.0pt;margin-left:0in;line-height:normal">None of the above<o:p></o:p></p>
  </td>
  <td width="412" style="width:309.0pt;border-top:none;border-left:none;
  border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  mso-border-top-alt:solid black .5pt;mso-border-top-themecolor:text1;
  mso-border-left-alt:solid black .5pt;mso-border-left-themecolor:text1;
  mso-border-top-alt:black .5pt;mso-border-top-themecolor:text1;mso-border-left-alt:
  black .5pt;mso-border-left-themecolor:text1;mso-border-bottom-alt:windowtext .75pt;
  mso-border-right-alt:windowtext .75pt;mso-border-style-alt:solid;padding:
  0in 5.25pt 0in 5.25pt;height:14.25pt">
  <p class="MsoBodyText" style="margin-top:6.0pt;margin-right:0in;margin-bottom:
  10.0pt;margin-left:0in;line-height:normal">Execute code in memory<o:p></o:p></p>
  </td>
 </tr>
</tbody></table>
<!--kg-card-end: html-->
<h3 id="jarleash-the-java-based-administrator">JARLEASH: The JAVA-based administrator</h3><p>JARLEASH is a JAR-based backdoor that UAT-7810 deploys on their own infrastructure, as well as on compromised systems with JAVA available, to enable easy access to the system. JARLEASH is accompanied by a startup script that first kills any active instances of JARLEASH on the system, and then spawns the JAVA container to deploy JARLEASH.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-642ab253-0825-44a3-a2dd-600cbda6bb69.png" class="kg-image" alt="UAT-7810 continues building ORB networks using new malware" loading="lazy" width="996" height="474" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/data-src-image-642ab253-0825-44a3-a2dd-600cbda6bb69.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-642ab253-0825-44a3-a2dd-600cbda6bb69.png 996w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 3. Startup script for JARLEASH.</em></i></figcaption></figure><p>JARLEASH can either use an external configuration file or default to an embedded configuration. The configuration file contains comments in Simplified Chinese, indicating that the operators were Chinese-speaking individuals.</p><p>The backdoor has the following capabilities:</p><ul><li>Host a web-based file management interface</li><li>FTP and SFTP servers</li><li>Run a netcat server on a specified IP and port number</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-68ff379a-463c-4605-aea7-cdc27fda8c18.png" class="kg-image" alt="UAT-7810 continues building ORB networks using new malware" loading="lazy" width="933" height="796" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/data-src-image-68ff379a-463c-4605-aea7-cdc27fda8c18.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-68ff379a-463c-4605-aea7-cdc27fda8c18.png 933w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 4. JARLEASH core components.</em></i></figcaption></figure><h3 id="leashtest-testing-the-waters">LEASHTEST: Testing the waters</h3><p>Talos also discovered a test binary UAT-7810 developed that we track as &#x201C;LEASHTEST.&#x201D; This binary is not malicious as-is, but its presence on a device likely indicates a compromise. It is used to test rudimentary functionality on the MIPS platform. Internally named &quot;iot-test&quot;, it checks to see if it can take the following actions on an Internet-of-Things (IOT) device:</p><ul><li>Create a thread and join it</li><li>Bind and listen to a port to open up a TCP acceptor</li><li>Create a child process (sub program)</li><li>Create an async timer</li><li>Print &quot;Hello World!&quot;</li><li>Test exception handling routine</li></ul><p>&#xA0;The development and use of LEASHTEST signifies that even though they have developed LONGLEASH, a full-fledged backdoor framework, UAT-7810 is still actively testing functionality on MIPS platforms and may not be completely confident of its behavior on MIPS devices.</p><h2 id="coverage">Coverage</h2><p>SNORT&#xAE; SIDs for the threats detailed here are: 66433, 66432, 66430, 66431, 301493.</p><p>ClamAV signatures for the malicious tooling associated with this cluster are:</p><ul><li>Unix.Backdoor.Agent-10059997-1</li><li>Unix.Backdoor.Agent-10059998-0</li><li>Unix.Backdoor.Agent-10059999-0</li><li>Java.Backdoor.Agent-10060000-0</li><li>Unix.Backdoor.Agent_mips32-10060001-0</li><li>Unix.Backdoor.Agent_mips32r2-10060002-0</li><li>Unix.Backdoor.Agent_armv7-10060003-0</li><li>Unix.Backdoor.Agent_mips1-10060004-0</li><li>Unix.Backdoor.Agent_mips32r2el-10060005-0</li><li>Unix.Backdoor.Agent_mips32el-10060006-0</li></ul><h2 id="iocs">IOCs</h2><h3 id="network-indicators">Network indicators</h3>
<!--kg-card-begin: html-->
<pre>
194.233.92[.]26
217.15.160[.]247
217.15.164[.]147
95.182.100[.]231

http[:]//217.15.160[.]247:8088/
http[:]//217.15.160[.]247:2222/
http[:]//217.15.160[.]247:99/
http[:]//194.233.92[.]26:8088/
http[:]//194.233.92[.]26:2222/
http[:]//217.15.164[.]147:99/
http[:]//217.15.164[.]147:8088/
http[:]//217.15.164[.]147:2222/
http[:]//95.182.100[.]231:2222/
</pre>
<!--kg-card-end: html-->
<h3 id="malware-indicators">Malware indicators</h3><p>LEASHTEST</p>
<!--kg-card-begin: html-->
<pre>
1b5649b479fd625de5c8120873644b5eb669cc89cd504582c18e0ae350fd8823
</pre>
<!--kg-card-end: html-->
<p>LONGLEASH</p>
<!--kg-card-begin: html-->
<pre>
755fcee1337a252203002ecfdf673a08cfadeda8d738bef2d518a08e0626aa4f
</pre>
<!--kg-card-end: html-->
<p>Startup script for JARLEASH </p>
<!--kg-card-begin: html-->
<pre>
e799d72929d7ccc7f6b6109742b8cc482838303207efc989543b6e1ca6d16e9c
</pre>
<!--kg-card-end: html-->
<p>Configuration file for JARLEASH </p>
<!--kg-card-begin: html-->
<pre>
3b89d183eb014e29d9d0d4e45fc2b784a7fcfcf31dd48fd3bde30f8d956383d1
</pre>
<!--kg-card-end: html-->
<p>JARLEASH</p>
<!--kg-card-begin: html-->
<pre>
324d95024fc8da5c92b5a1f4825aed5a2a91c9ca8fb6aa52abb332a4c9cf4257 
bafba443170e54ef7fd431ce7f1b5e202719f3fd022e4ef70788904f574d2cdf
</pre>
<!--kg-card-end: html-->
<p>DOGLEASH</p>
<!--kg-card-begin: html-->
<pre>
604b53f87d6c070bf387e80c70a6df8d272fa3fc143148d41f13e59d52ab1f13 
c92541f273eeb576d39235d0a5c6f18f2574b132a1022598edfa38065783ab98 
29c7fccc6ef8cbfe4da9a169c7c74bacaea1fb515a1fddef91ab1b1522f76e4c 
425bf771c8c9f740b1ae9803dcb4fd45af4d6a6f171fcc72fc7d511095ca82ce 
ac8eae94d27122f4751bc96d9ea52d30000b7ca37569a2291b2710824ca3396f 
dc4f25b2247cfdd6fc96848db30a178baa4419a4c854e86e315b465836102d14 
3878dd5c8eba1e5b53ab2e07e7b5482e95a3fd3e98268bcd7861318bc9902376 
9b9e0e5a1eb469b8d20dc23351e08ff5d5731e1cedce0ddee9bbd00a76217f13 
57bdab2ba4b05ec0338c06632599393d5b14227f31a43fe950ea8fdd47428715 
b8d247fd1fb85d24a17afeec3815906dfbcdc5359647910b4a153900ec999a0f 
5e225ea2648a8cba0fd94ec7fd8ce5315f5d0cc2922bafc9db3c8c41280e917c 
d5cf7315186a78ab6a7475c338bdf101bc6461930aaa7a012a02cf93f347c207 
dd0fc1a88180fde8367bec7086f99294f36b8332f12994293139ed532d2ebbac 
5c3f190571645c4641dcff2c07a4c3ab9acad06aa9607350a385729d8d6139f1 
323c3a91be60ebc3e06e942bad04899a15911cea23269e43d07829164b2ce5d4 
880425fee707e9f42e0b8d60119ed639b1ad506ea29877d126bdebce379cd229 
e5d2de8ae98579bfb940290f60e59a502b3065345aaf765456387989c0488b20 
2e0e43776e2e1a37d882a1b2ebb7d337ee88950177e43831dae645a367824feb 
b5969636eec376ad6c3ece2202b1722219955638e09b6f96d4cfc0598d3b1890 
1660536f448b8b9f086ce9ea3ce4e9deefc59a76711ea53ee6d8f08fc8c1bb99 
65feba2c971c214e71303ad2e0fbf62b45ebcaa784cbf3d0dab62786cb4c0469 
53ac2b231c23d41234e55b1f7ed89f86234f785adbbe820959655d7b019d7df9 
33c10b77e1da9f0679023d55fb3057879d15609db9c1d46ee5c3ff1240a3d052 
5faea1650cac0f3ffd2dc1fb220182095a46e34158967d37c2a942e85e2ca97b 
62d4ec87ed21f0d15cb769b0b2a5577cab41fc2cdb1e7e796c5bdff09264dd9a 
534a4a5bff2609a2d6e088cb87465c08c2d69c6aaa7d2ffcbcd491274b8505f1 
5eab4c61baa67ae2838a36c2e6ff0476a8f2117b96a7027b830c8cb46ce78efc 
0af4c52a1d13e4132a1843ce7727abcf0ddd4d1ca6a4b17cdf599ec3f355c241 
d4861088161fc72b9922abf933b4ea664a807105ec1eab4a173253aa60bfe6d7 
3d296af7f29c0425655bd1cc0be48fe4aba52ee6760a89e805ca2589f4ef4d77 
f235d2e044c2f7814e6bbcd835b9fd9f10f227dacfb9396185ec2013e7df4db4 
4130f49fa81a699a667cafdbd6d1f6e781edd686c947eb8ae27134f6dc2c43d7 
0a8555a71868749be8c905ed53296ce335af50a9262772b5e154ad3f9c35c2e4 
5dbfa033676b5caacfae902734ce462cd871181eefbe299250ca8ac7e139719e 
20fcba222f74dd68aaeb1f0ad30cdf702a828ee164a182b30d05d600c35b72d9 
912adea5339c73cb4a777a3e9f98bf3cb08da6622c9dd3b4cc9b083cb03d10a2 
03926e3da998f32ad898b640bd15cf145768f9e849e6f18d81350234254c424e 
16971f9706d70ac4925651c7c8719b9d77aff63e4c0a618129efc32c2c46b989 
6917c0f9eafefe42e33e791b75a7e503ff8b081bc10a98449e4076787dfc6c16 
c7c9bfa9ffcd8fb6a2afe656f510c406ddc58ebff48ce1d0fd3fad951b46a36e 
b9fe48bda9a6c8787981a24f8bbc723a6f6aa80cab5fa53481937382f3c6ce85 
f3fbf4481f30fd840f35568746f54be49eb92b2c9ac95597a7760abb171cb54b 
6366d59b573d50fd23ff650923c4a8c1c918518a02d0a56f12c23533c45f439d 
3fcaa3038e365b6ab0b121e2cd319c56b74e37381943a0da0e8dce407087cdb8 
bf70c6f3a8e913f526ec57eeec50e1306f7b34b037915b7a1cf2968cc46acc58 
0352f3e338261d98895df4c7b7a76b296485b2290c72bce56603351d167d0601 
52b871429833e1dee348263844efb531f6a3fcd321f88dc8a876caaee912cedd 
5db2ce9acd50f96d566e8d139f6490abf2bbf7a9293b876eeb4598fd2c37c515 
3169a6dbcce684e2c5a2f166996b58ffa673df6e58b8edf2bdf3e66271c8c69e 
d871d76171504597bbda387689e12e7a5e354c360ff135f4df231cec68c761af 
d1f963b88672f3676a7da1580262ba0d4f367cc57a94b551754c20f77a670c43 
76d9e2a2ff313f5b91cc67aab1127122baee1c3efbae1087e58a25bc5f1eb065 
8c104da0e66ef6384663309aaf8fb49f549f2785d835eec620b265f8aa11d9f0 
c494c878e28284539419612616d964ab9224cbe27e57f42293d91d02d684e3db 
08701ed7975bf4f5688c2724d27ab497764200ad6f4dc53d3cc03b170378ced0 
604b53f87d6c070bf387e80c70a6df8d272fa3fc143148d41f13e59d52ab1f13 
0a8cae96e25e85c612b0736fe886f9b124ad70ec425bc2ec1a8a4135b25436ba 
8459ff264a2c81c68a34c4ee6bc109d141ad28b96037d34ff112322a4c853739 
68445a37a9943a267a8b2100fba2678353d6ec88844505ccbba659e586c7a105 
29686c933cec1e274467e2dae264625ae6f754824bb7f550bc9c3131f625562c 
d973ad5a80c3d7468a9c392db4166857ed32b5d61cd6755766ba8922156dada3 
f5a57dfae488d9dfe260b32460a1d947fb5af58ceaf2fb0139bc08b4bb79a966 
2ebc1b6cf543e2cb3f22d9a5b54b6676bb71dde98df7532f8791297734e44fdd 
6dbd507ca7cecea861f9cf704b3c5c37f5bd5392886a8c2562088892b7703fa5 
89f0a67bc595ab8bce02c2f95f9292ad06e1868207e809c76bd16f0cab800c06 
d81201d0fc19977e51104438a5b9cba861f4da20cea3ae9183edf16ab11d98f8 
9d52cb4febf3342c34dcc8198dcaf453458be3699ab47dc08616aa7f18daa7fa 
9a927c37a31b80975c5c5467f112b61478c9493c046281046443525358a5acb0 
6cda1e81667f869940401f05a55c8dea94dbdf3ceffb93b5f320a6462cfea44d 
745538dea8ed9aec4466e67a9d0aecf9e7026ff16a792d1d6f306e8b67d3f34c 
13acadb3541e75af50e02d5be56c2238b93d8f154ce5514be1558e6ee59a1432
</pre>
<!--kg-card-end: html-->
]]></content:encoded></item><item><title><![CDATA[Catan and Mouse]]></title><description><![CDATA[What do board games and cybersecurity have in common? Pattern recognition. Strategy. Adaptation. In this week’s Threat Source Bill explores why curiosity may be a defender’s most valuable skill.]]></description><link>https://blog.talosintelligence.com/catan-and-mouse/</link><guid isPermaLink="false">6a45614e90dd380001fb081d</guid><category><![CDATA[Threat Source newsletter]]></category><dc:creator><![CDATA[William Largent]]></dc:creator><pubDate>Thu, 02 Jul 2026 18:00:34 GMT</pubDate><media:content url="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/threat_source-3.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/threat_source-3.jpg" alt="Catan and Mouse"><p>Welcome to this week&#x2019;s edition of the Threat Source newsletter.&#xA0;&#xA0;</p><blockquote><em>&#x201C;I do not know everything; still many things I understand.&#x201D; </em><br>&#x2015; Madeleine L&apos;Engle, A Wrinkle in Time&#xA0;</blockquote><blockquote><em>&#x201C;Don&apos;t try to&#xA0;comprehend with&#xA0;your mind. Your&#xA0;minds are&#xA0;very limited. Use your intuition.&#x201D; </em><br>&#x2015; Madeleine L&apos;Engle, A Wind in the Door&#xA0;</blockquote><p>The World Cup. The 4<sup>th</sup>&#xA0;of July as&#xA0;the US turns 250. Dungeon Crawler Carl.&#xA0;LeBron&#xA0;moving&#xA0;on. Wimbledon. AI.&#xA0;There&#xA0;are&#xA0;so many things that I could draw&#xA0;a parallel&#xA0;to&#xA0;farm&#xA0;for this week&#x2019;s newsletter&#xA0;content.&#xA0;So&#xA0;let&#x2019;s&#xA0;talk about board games.&#xA0;&#xA0;<br>&#xA0;<br>A lot of skills come and&#xA0;go,&#xA0;and your journey with cybersecurity will be full of tools that you learn and then are gone.&#xA0;It&#x2019;s&#xA0;a never-ending journey of learning.&#xA0;And&#xA0;it&#x2019;s&#xA0;honestly the best thing about this career path for the kind of minds that are drawn to it.&#xA0;Innate curiosity is the currency of our cyber family.&#xA0;&#xA0;</p><p>Learning new and&#xA0;interesting board games (and I use the term broadly to circle in RPGs, card games,&#xA0;etc) is an incredible way to hone your mind and keep it&#xA0;focused on some of the most important tools that you will have.&#xA0;&#xA0;</p><p>Games will harness your ability to highlight anomalous activity, by players, by rulesets, by structure. They will also highlight&#xA0;your&#xA0;personal brand of brain activity and allow you to&#xA0;leverage&#xA0;your singular style and intuition into a weapon.&#xA0;&#xA0;</p><p>There are countless ways to win&#xA0;<em>Ticket to</em>&#xA0;<em>Ride</em>&#xA0;and your play style may be completely counter to someone you play with.&#xA0;That&#xA0;then&#xA0;creates patterns that you&#xA0;must&#xA0;learn to break. Nothing is more important to your defensive strategies than knowing yourself (know&#xA0;your environment!) and then breaking your tendencies to force your opponent to change their comfortable tactics (maybe, you&#x2019;ve created some honeypot fake accounts to trigger&#xA0;identity alerts to track threat actors, to track their tooling and methodologies quietly).&#xA0;&#xA0;</p><p>This&#xA0;is&#xA0;nothing compared&#xA0;to&#xA0;the chaotic variance of a game like&#xA0;<em>Go</em>&#xA0;with&#xA0;its&#xA0;simplistic ruleset&#xA0;yet&#xA0;cascading complexity of each stone&#x2019;s placement.&#xA0;&#xA0;<br>&#xA0;<br>Learning a new game is a challenge and a great practice in and of&#xA0;itself, but&#xA0;learning how YOU and your strategies evolve as you learn the game will give you a&#xA0;microcosmic&#xA0;view into taking on new technologies, new coding languages,&#xA0;and&#xA0;new skill sets.&#xA0;&#xA0;</p><p>You will have peaks and valleys. So&#xA0;often in the work world we let the complexities and our imposter syndrome keep us from taking&#xA0;a&#xA0;risk or next step in our learning evolutions &#x2013; next steps that we boldly take in our gaming lives.&#xA0;&#xA0;</p><p>So&#xA0;take what you learn from a&#xA0;<em>Machi Koro</em>, or&#xA0;<em>Pathfinder</em>, or&#xA0;<em>Catan</em>, or&#xA0;<em>Wingspan</em>, or&#xA0;<em>ADnD</em>&#xA0;<em>2e</em>, or ... you get the idea, take that same aggressive inquisitive mindset to your current work, turn it on&#xA0;its&#xA0;head and find a new way to do something you are already good at. And then look at something you struggle with and treat it&#xA0;like&#xA0;the next level. In the end, the&#xA0;worst&#xA0;that can happen&#xA0;is&#xA0;you fail. Because&#xA0;that&#x2019;s&#xA0;where&#xA0;we learn.&#xA0;&#xA0;</p><blockquote><em>&quot;If the rule you followed brought you to this, of what use was the rule?&quot; </em><br>&#x2013; Cormac McCarthy, No Country for Old Men&#xA0;&#xA0;</blockquote><h2 id="the-one-big-thing">The one big thing&#xA0;</h2><p>Cisco Talos is highlighting research into&#xA0;<a href="https://blog.talosintelligence.com/artoken-inside-an-eviltokens-affiliate-panel-targeting-microsoft-365/" rel="noreferrer noopener"><u>ARToken</u></a>&#xA0;a&#xA0;fully-featured&#xA0;phishing-as-a-service (PhaaS) operator panel, branded &quot;ARToken,&quot; that shares infrastructure, API contracts, and operational patterns with the&#xA0;EvilTokens&#xA0;platform documented by&#xA0;Sekoia&#xA0;and Microsoft in early 2026, and features&#xA0;capabilites&#xA0;previously not documented.&#xA0;</p><h3 id="why-do-i-care">Why do I care?&#xA0;</h3><p>The&#xA0;ARToken&#xA0;panel exposes 80+ API endpoints for device code phishing, Primary Refresh Token (PRT) persistence, email access, business email compromise (BEC) operations, and SharePoint exfiltration &#x2014; all accessible to operators through a React-based dashboard.&#xA0;These features&#xA0;indicate&#xA0;the platform is more mature than a simple device code phishing kit &#x2014; it is a complete BEC operations environment.&#xA0;</p><h3 id="so-now-what">So now what?&#xA0;</h3><p>Defenders should be aware of the kind of capabilities that this panel gives and use&#xA0;the&#xA0;<a href="https://github.com/Cisco-Talos/IOCs/blob/main/2026/07/artoken-inside-an-eviltokens-affiliate-panel-targeting-microsoft-365.txt" rel="noreferrer noopener"><u>IOCs provided by Talos</u></a>&#xA0;to block&#xA0;malicious&#xA0;activity and use them as pivots for their internal hunts if they are present.</p><h2 id="top-security-headlines-of-the-week">Top security headlines of the week&#xA0;</h2><p><strong>An aggressive password-spraying campaign targeting Microsoft 365 environments generated more than 81 million login attempts over a two-week period</strong><br>The threat actor tried to authenticate via Microsoft&apos;s Azure command-line interface (CLI) using still valid username and password combinations that had been exposed in past breaches. (<a href="https://www.bleepingcomputer.com/news/security/hackers-target-microsoft-365-accounts-with-81-million-login-attempts/" rel="noreferrer noopener"><u>BleepingComputer</u></a>)</p><p><strong>Threat actors are trying to&#xA0;leverage&#xA0;organization-owned AI agents to power complex threat activity</strong><br>By exploiting misconfigured or exposed AI endpoints, adversaries are increasingly turning enterprise-grade automation tools against their owners to facilitate more sophisticated and evasive cyberattacks. (<a href="https://www.darkreading.com/cloud-security/attackers-hijack-exposed-ai-endpoints-power-offensive-ops" rel="noreferrer noopener"><u>DarkReading</u></a>)</p><p><strong>A recent authentication bypass vulnerability in the&#xA0;SimpleHelp&#xA0;remote monitoring and management (RMM) software has been exploited for malware&#xA0;delivery</strong><br>Tracked as CVE-2026-48558, the bug&#xA0;impacts&#xA0;SimpleHelp&#x2019;s&#xA0;OpenID Connect authentication flow and allows a remote attacker to obtain a fully authenticated technician session. (<a href="https://www.securityweek.com/critical-simplehelp-vulnerability-exploited-for-malware-delivery/" rel="noreferrer noopener"><u>Security Week</u></a>)</p><h2 id="can%E2%80%99t-get-enough-talos">Can&#x2019;t get enough Talos?&#xA0;</h2><p><a href="https://blog.talosintelligence.com/martin-lee-running-through-the-arctic-and-the-threat-landscape/" rel="noreferrer noopener"><strong><u>Martin Lee: Running through the Arctic (and the threat landscape)</u></strong></a><br>Ever wonder how someone goes from studying human viruses to leading cybersecurity teams? How about running through the Arctic for fun? &#xA0;In this Humans of Talos you get to hear from Martin and&#xA0;that&#x2019;s&#xA0;ALWAYS worth pulling up a seat.&#xA0;<br>&#xA0;<br><a href="https://beerswithtalos.talosintelligence.com/2033817/episodes/19389393-ai-is-finding-bugs-faster-now-what" rel="noreferrer noopener"><strong><u>Beers with Talos</u></strong></a><strong>&#xA0;</strong>has an updated format,&#xA0;which&#xA0;includes making Hazel a&#xA0;hacker&#xA0;and &#x201C;Reasons not to Quit&#x201D;,&#xA0;listener questions (yes, that means&#xA0;YOU)&#xA0;-&#xA0;as well as a guest appearance from Nick Biasini who is always worth the price of&#xA0;admission.&#xA0;</p><h2 id="upcoming-events-where-you-can-find-talos">Upcoming events where you can find Talos&#xA0;</h2><ul><li><a href="https://blackhat.com/us-26/" rel="noreferrer noopener"><u>Black Hat USA</u></a> (Aug. 1 &#x2013; 6) Las Vegas, NV&#xA0;</li><li><a href="https://defcon.org/html/defcon-34/dc-34-index.html" rel="noreferrer noopener"><u>DEF CON 34</u></a> (Aug. 6 &#x2013; 9) Las Vegas, NV&#xA0;</li></ul><h2 id="most-prevalent-malware-files-from-talos-telemetry-over-the-past-week">Most prevalent malware files from Talos telemetry over the past week&#xA0;</h2><p><strong>SHA256: 9f1f11a708d393e0a4109ae189bc64f1f3e312653dcf317a2bd406f18ffcc507</strong>&#xA0;<br>MD5: 2915b3f8b703eb744fc54c81f4a9c67f&#xA0;<br>Talos Rep:&#xA0;<a href="https://talosintelligence.com/talos_file_reputation?s=9f1f11a708d393e0a4109ae189bc64f1f3e312653dcf317a2bd406f18ffcc507" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=9f1f11a708d393e0a4109ae189bc64f1f3e312653dcf317a2bd406f18ffcc507</u></a>&#xA0;<br>Example Filename: VID001.exe&#xA0;<br>Detection Name:&#xA0;Win.Worm.Coinminer::1201**&#xA0;&#xA0;</p><p><strong>SHA256: 9896a6fcb9bb5ac1ec5297b4a65be3f647589adf7c37b45f3f7466decd6a4a7f </strong><br>MD5: 38de5b216c33833af710e88f7f64fc98 Talos Rep:&#xA0;<a href="https://talosintelligence.com/talos_file_reputation?s=9896a6fcb9bb5ac1ec5297b4a65be3f647589adf7c37b45f3f7466decd6a4a7f" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=9896a6fcb9bb5ac1ec5297b4a65be3f647589adf7c37b45f3f7466decd6a4a7f</u></a>&#xA0;<br>Example Filename: sample.exe&#xA0;<br>Detection Name:&#xA0;Win.Tool.Procpatcher::1201&#xA0;&#xA0;</p><p><strong>SHA256: afc8a00883a4ea07df2dc1d4ed02f8a23b35c9456413b438a2d9ce3ae5076638 </strong><br>MD5: cc4d231df34e57f59eb970353c7d9de2&#xA0;<br>Talos Rep:&#xA0;<a href="https://talosintelligence.com/talos_file_reputation?s=afc8a00883a4ea07df2dc1d4ed02f8a23b35c9456413b438a2d9ce3ae5076638" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=afc8a00883a4ea07df2dc1d4ed02f8a23b35c9456413b438a2d9ce3ae5076638</u></a>&#xA0;<br>Example Filename: AutoPico.exe&#xA0;<br>Detection Name:&#xA0;PUA.Win.Tool.Kmsactivator::1201&#xA0;&#xA0;</p><p><strong>SHA256: c0ad494457dcd9e964378760fb6aca86a23622045bca851d8f3ab49ec33978fe</strong><br>MD5: bf9672ec85283fdf002d83662f0b08b7&#xA0;<br>Talos Rep:&#xA0;<a href="https://talosintelligence.com/talos_file_reputation?s=c0ad494457dcd9e964378760fb6aca86a23622045bca851d8f3ab49ec33978fe" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=c0ad494457dcd9e964378760fb6aca86a23622045bca851d8f3ab49ec33978fe</u></a>&#xA0;<br>Example Filename: f_000cd7.html <br>Detection Name: W32.C0AD494457-95.SBX.TG&#xA0;&#xA0;</p><p><strong>SHA256: 853baab97b1f3b03c1ffa55797e87867f5fb7ce33457411f56afd270cb395453 </strong><br>MD5: 41acb30b9d662d48b7b4fc0ac3d4b79f Talos Rep:&#xA0;<a href="https://talosintelligence.com/talos_file_reputation?s=853baab97b1f3b03c1ffa55797e87867f5fb7ce33457411f56afd270cb395453" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=853baab97b1f3b03c1ffa55797e87867f5fb7ce33457411f56afd270cb395453</u></a>&#xA0;<br>Example Filename: SignInfoConsole.exe <br>Detection Name: W32.853BAAB97B.in12.Talos&#xA0;</p>]]></content:encoded></item><item><title><![CDATA[Martin Lee: Running through the Arctic (and the threat landscape)]]></title><description><![CDATA[Ever wonder how someone goes from studying human viruses to leading cybersecurity teams? In this Humans of Talos, we’re joined by Martin Lee, EMEA Lead, to talk about his journey into the industry.]]></description><link>https://blog.talosintelligence.com/martin-lee-running-through-the-arctic-and-the-threat-landscape/</link><guid isPermaLink="false">6a3c05648d8d330001fb7d45</guid><category><![CDATA[Humans of Talos]]></category><dc:creator><![CDATA[Amy Ciminnisi]]></dc:creator><pubDate>Wed, 01 Jul 2026 10:00:57 GMT</pubDate><media:content url="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/humans_of_talos-1.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/humans_of_talos-1.jpg" alt="Martin Lee: Running through the Arctic (and the threat landscape)"><p>Ever wonder how someone goes from studying human viruses to leading cybersecurity teams? In this Humans of Talos, we&#x2019;re joined by Martin Lee, EMEA Lead, to talk about his journey into the industry. Martin takes us back to the early days of the internet, explaining how he made the leap from academia to the front lines of threat research. He also gives us a fascinating look at his current work, where he&#x2019;s applying a sociological lens to cybersecurity to better understand what makes certain organizations more resilient than others.<br><br>Whether you&#x2019;re just starting your career in security or looking for a fresh perspective, you won&apos;t want to miss Martin&#x2019;s advice on staying visible, being curious, and &quot;flavoring your life with many spices.&quot;</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/mMF_AOCFmV8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Martin Lee: Running through the Arctic (and the threat landscape)"></iframe></figure><p><strong>Amy Ciminnisi: Martin, welcome! Can you describe what you do here at Talos for people who might not know you?</strong></p><p>Martin Lee: My job is really ambassadorial. I still research the threat landscape, although I spend less time doing that now. Certainly understanding what are the changes that are happening in the threat landscape. But mostly my job is to externalize that &#x2014; both to write about the threat landscape, but also discuss what we&apos;re seeing, what&apos;s important, and what&apos;s different with our customers and partners.</p><p><strong>AC: I had no idea that you started your career in researching the genetics of human viruses. That&#x2019;s one hell of a career change. Can you tell us about how you ended up where you are today?</strong></p><p>ML: Yeah, &quot;I discovered the internet,&quot; is basically the short answer. I discovered the internet very, very early on and just thought this is going to be the biggest invention in my life. I thought if I didn&apos;t jump there and then because I could see it was going to explode and go everywhere, and if I didn&apos;t jump then, I wouldn&apos;t be able to keep up with it. So, I left behind a career in academia to jump on board in the early internet and start building it and building websites.</p><p><strong>AC: I actually wrote about this in my most recent newsletter &#x2014; I&apos;m one of the younger members of Talos, so I was born well after all of this started. It is so fascinating to me to hear about people who were out of college when the internet really started booming.</strong></p><p>ML: Yeah, it was growing massively through the mid to late 90s, which was awesome. And then there was the .com crash, which was pretty rubbish. So, I found myself with a young family and less work than I wanted. This job came up, writing spam filters. This was before spam filters and certainly before spam was a big problem. So I thought, &quot;Okay, that sounds fun, let&apos;s do that.&quot; And then we started detecting all of these weird and wonderful attacks. What we didn&apos;t know is we were detecting the first APT attacks. In trying to work out what was happening and what we were seeing, that kind of launched the career. So here we are over 23 years later, and cybersecurity has just grown massively. But it was entirely by accident that I ended up here.</p><hr><p><em>Want to see more? Watch the&#xA0;</em><a href="https://www.youtube.com/watch?v=mMF_AOCFmV8" rel="noreferrer"><em>full interview</em></a><em>, and don&#x2019;t forget to subscribe to our YouTube channel for future episodes of Humans of Talos.</em></p>]]></content:encoded></item><item><title><![CDATA[ARToken: Inside an EvilTokens affiliate panel targeting Microsoft 365]]></title><description><![CDATA[Talos has identified "ARToken," a phishing-as-a-service platform that targets Microsoft 365. The ARToken panel exposes 80+ API endpoints for device code phishing, Primary Refresh Token persistence, email access, BEC operations, and SharePoint exfiltration.]]></description><link>https://blog.talosintelligence.com/artoken-inside-an-eviltokens-affiliate-panel-targeting-microsoft-365/</link><guid isPermaLink="false">6a42cdb790dd380001fb070d</guid><category><![CDATA[Threat Advisory]]></category><dc:creator><![CDATA[Michael Kelley]]></dc:creator><pubDate>Wed, 01 Jul 2026 10:00:38 GMT</pubDate><media:content url="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/threat_advisory.png" medium="image"/><content:encoded><![CDATA[
<!--kg-card-begin: html-->
<ul>
  <li>Cisco Talos identified a fully-featured phishing-as-a-service (PhaaS) operator panel, branded &quot;ARToken,&quot; that shares infrastructure, API contracts, and operational patterns with the EvilTokens platform documented by Sekoia and Microsoft in early 2026.</li>
  <li>The ARToken panel exposes 80+ API endpoints for device code phishing, Primary Refresh Token (PRT) persistence, email access, business email compromise (BEC) operations, and SharePoint exfiltration &#x2014; all accessible to operators through a React-based dashboard.</li>
  <li>Analysis of the platform&apos;s publicly served JavaScript bundle reveals the complete post-compromise toolkit available to affiliates, including capabilities not previously detailed in public reporting on EvilTokens.</li>
  <li>The phishing kit deploys a seven-layer anti-analysis system combining client-side behavioral verification with XOR-encrypted payloads, a more sophisticated evasion approach than the server-side X-Antibot-Token mechanism documented in prior EvilTokens research.</li>
</ul>
<!--kg-card-end: html-->
<h2 id="background-eviltokens-and-device-code-phishing-as-a-service">Background: EvilTokens and device code phishing-as-a-service</h2><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/threat_advisory.png" alt="ARToken: Inside an EvilTokens affiliate panel targeting Microsoft 365"><p>In March 2026, Sekoia published a two-part analysis of EvilTokens, a PhaaS platform that abuses Microsoft&apos;s OAuth 2.0 Device Authorization Grant (RFC 8628) to capture victim tokens while bypassing multi-factor authentication (MFA) entirely. Microsoft <a href="https://www.microsoft.com/en-us/security/blog/2026/04/06/ai-enabled-device-code-phishing-campaign-april-2026/">confirmed the campaign&apos;s scale</a> in April 2026, noting significantly higher success rates than previous device code attacks, AI-powered personalized lures, and a post-compromise pipeline that included automated device registration for persistent access.</p><p>By the time of Microsoft&apos;s publication, Sekoia had documented approximately 500 Cloudflare Workers domains and over 1,000 total phishing pages operating under the EvilTokens umbrella, with affiliates targeting finance professionals, HR staff, and logistics personnel across global regions.</p><p>EvilTokens&apos; second-stage capabilities, revealed in <a href="https://blog.sekoia.io/eviltokens-an-ai-augmented-phishing-as-a-service-for-automating-bec-fraud-part-2/">Sekoia&apos;s Part 2 research</a>, include an AI-augmented BEC pipeline chaining Groq-hosted Llama models for financial exposure scoring and GPT-4o-mini for email translation, producing three tailored BEC scenarios per compromised mailbox. The platform sells access at $1,500 one-time plus $500/month, with a standalone &quot;Portal Browser&quot; for $500 lifetime.</p><h2 id="the-lure-in-the-wild-vendor-impersonation-invoice-fraud">The lure in the wild: Vendor-impersonation invoice fraud</h2><p>Most public reporting on EvilTokens covers the panel and the kit. What it has not shown is how an ARToken lure actually reaches an inbox. Talos recovered two near-identical messages, sent roughly four minutes apart on April 20, 2026, that initiate the chain. The tradecraft is targeted, not spray-and-pray.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/Picture1.png" class="kg-image" alt="ARToken: Inside an EvilTokens affiliate panel targeting Microsoft 365" loading="lazy" width="936" height="426" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/Picture1.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/Picture1.png 936w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 1. A sample ARToken phishing email</em></i></figcaption></figure><p>The messages spoof an accounts-payable contact at a legitimate Wisconsin contractor, addressed to an accounts-payable recipient at a U.S. life-sciences company &#x2014; abusing a real vendor relationship rather than inventing a sender. The lure theme is an outstanding-invoice query (&quot;the following invoices appear to still be outstanding&#x2026; advise when this will be processed&quot;), the kind of message accounts-payable staff are conditioned to act on. Other features of note in this email include:</p>
<!--kg-card-begin: html-->
<ul>
  <li>The From header presents the vendor&apos;s real domain, but Reply-To quietly redirects replies to an unrelated domain &#x2014; a classic reply-pivot that keeps any victim response away from the spoofed organization.</li>
  <li>All three checks fail: SPF, DKIM (body-hash mismatch), and DMARC (compauth=none reason=405). The display identity is not authenticated from the sending path.</li>
  <li>Each message carries short random hex strings and an inline signature image (pumber.png), consistent with light per-message mutation to frustrate exact-match content rules.</li>
  <li>The visible anchor text reads as the vendor&apos;s genuine SharePoint tenant:
&#x201C;https[:]//mononapfp.sharepoint[.]com/:f:/document/INV-IgCx1X50pgUjR7iAjZL2fuQaAW4GfKVs6wHT3BYv9sgwW7g&#x201D;
</li>
</ul>
<!--kg-card-end: html-->
<p>However, the actual href points to a near-identical look-alike tenant &#x2014; the vendor&apos;s name with the .com folded directly into the tenant label &#x2014; under a different, attacker-controlled Microsoft 365 workspace. Because the destination is still a genuine sharepoint.com host, it inherits SharePoint&apos;s clean reputation: &#x201C;https[:]//mononapfpcom.sharepoint[.]com/:f:/g/IgAdH_aaBPMcQbtINZzC1TsLARj3dHj63MnKjvnY-QJrKEc&quot;</p><h2 id="discovery-the-artoken-panel">Discovery: The ARToken Panel</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/Picture2.png" class="kg-image" alt="ARToken: Inside an EvilTokens affiliate panel targeting Microsoft 365" loading="lazy" width="936" height="528" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/Picture2.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/Picture2.png 936w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 2. ARToken login page.</em></i></figcaption></figure><p>During investigation of phishing infrastructure targeting a Talos IR engagement, we identified a management panel at &#x201C;dashboard-bl.pamconj[.]com&#x201D; serving a React single-page application (SPA) with a 1.7MB compiled JavaScript bundle. The page title reads &quot;ARToken Panel.&quot;</p><p>SPA architecture exposes all client-side code including routes, UI labels, component logic, and API endpoint paths in the JavaScript bundle regardless of authentication state. No credentials were required or bypassed.</p><p>The associated command-and-control (C2) API operates at &#x201C;spx.pamconj[.]com&#x201D;, and phishing lures deploy through Cloudflare Workers accounts including &#x201C;clear90489058903-document.workers[.]dev&#x201D;.</p><h2 id="linking-artoken-to-eviltokens">Linking ARToken to EvilTokens</h2><p>The connection between ARToken and EvilTokens rests on multiple overlapping technical indicators:</p>
<!--kg-card-begin: html-->
<ul>
  <li>Identical API contract: ARToken&apos;s phishing kit issues POST /api/device/start with a JSON body containing userId, clientMode: &quot;broker&quot;, login_hint, and redirect_url. The C2 responds with device_code, user_code, verification_uri, and expires_in matching the EvilTokens API contract documented by Sekoia exactly.</li>
</ul>
<!--kg-card-end: html-->
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/Picture3.png" class="kg-image" alt="ARToken: Inside an EvilTokens affiliate panel targeting Microsoft 365" loading="lazy" width="936" height="724" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/Picture3.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/Picture3.png 936w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 3. Code request logic.</em></i></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/Picture4.png" class="kg-image" alt="ARToken: Inside an EvilTokens affiliate panel targeting Microsoft 365" loading="lazy" width="936" height="418" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/Picture4.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/Picture4.png 936w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 4. Code handling logic.</em></i></figcaption></figure>
<!--kg-card-begin: html-->
<ul>
  <li><b>Shared clientMode: &quot;broker&quot; semantics:</b> This parameter instructs the backend to use Microsoft&apos;s Authentication Broker (WAM) flow for PRT acquisition. It is not a standard OAuth parameter it is specific to EvilTokens&apos; implementation of persistent token capture.</li>
  <li><b>Matching deployment model:</b> Both platforms deploy phishing lures to Cloudflare Workers using UUID-prefixed subdomain patterns. ARToken uses {uuid}-docviewer.workers.dev, {uuid}-onedrive.workers.dev, and {uuid}-adobe2.workers.dev. EvilTokens uses [service]-[random].[target]-s-account.workers.dev. The naming convention and lure themes (Adobe, OneDrive, document viewers) overlap directly.</li>
  <li><b>Identical PRT lifecycle:</b>ARToken&apos;s API surface includes /prt/setup, /prt/refresh, /prt/renew, /prt/reacquire, and /prt/cookie, the same Primary Refresh Token persistence chain Sekoia documented as EvilTokens&apos; core differentiator over traditional AitM phishing platforms.</li>
  <li><b>Shared operational model:</b> Both platforms operate as multi-tenant PhaaS with isolated operator workspaces, Telegram bot notifications on token capture, subscription-based access, and template editors for lure customization.</li>
</ul>
<!--kg-card-end: html-->
<h2 id="technical-analysis-the-phishing-kit">Technical analysis: The phishing kit&#xA0;</h2>
<!--kg-card-begin: html-->
<table>
  <tr>
    <th style="width:10%">Layer</th>
    <th>Mechanism</th>
    <th>Purpose</th>
  </tr>
  <tr>
    <td>1</td>
    <td>User-Agent regex</td>
    <td>Blocks headless browsers, Selenium, Puppeteer, Playwright, crawlers, wget, curl</td>
  </tr>
  <tr>
    <td>2</td>
    <td>navigator.webdriver check</td>
    <td>Detects automation frameworks</td>
  </tr>
  <tr>
    <td>3</td>
    <td>Browser feature fingerprinting</td>
    <td>Identifies environments missing window.chrome, navigator.vendor, or touch/mouse APIs</td>
  </tr>
  <tr>
    <td>4</td>
    <td>Window dimension analysis</td>
    <td>Catches headless defaults reporting 0x0 outer dimensions</td>
  </tr>
  <tr>
    <td>5</td>
    <td>Interaction telemetry</td>
    <td>Requires 3+ mouse moves or 1+ touch events before enabling payload</td>
  </tr>
  <tr>
    <td>6</td>
    <td>Timing gate</td>
    <td>Minimum 800ms elapsed since page load</td>
  </tr>
  <tr>
    <td>7</td>
    <td>Movement pattern analysis</td>
    <td>Validates mouse coordinate trajectories for organic (non-linear) motion</td>
  </tr>
</table>
<!--kg-card-end: html-->
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/Picture5.png" class="kg-image" alt="ARToken: Inside an EvilTokens affiliate panel targeting Microsoft 365" loading="lazy" width="936" height="932" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/Picture5.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/Picture5.png 936w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 5. Human verification logic.</em></i></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/Picture6.png" class="kg-image" alt="ARToken: Inside an EvilTokens affiliate panel targeting Microsoft 365" loading="lazy" width="936" height="740" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/Picture6.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/Picture6.png 936w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 6. Bot detection logic.</em></i></figcaption></figure><p>This client-side behavioral verification is notably more sophisticated than the server-side <strong>X-Antibot-Token</strong> mechanism (SHA-256 of secret + timestamp + &quot;antibot&quot; with 5-minute validity window) documented in Sekoia&apos;s EvilTokensresearch. The divergence is consistent with EvilTokens&apos; known practice of selling anti-bot pages as a separate product through a dedicated Telegram bot. Affiliates may deploy upgraded or custom anti-analysis modules independently of the core platform.</p><p>The phishing payload itself fires on <strong>DOMContentLoaded</strong> and:</p>
<!--kg-card-begin: html-->
<ol>
  <li>Attempts to steal any existing JWT from localStorage (key: artoken_jwt) for victim session correlation</li>
  <li>Extracts the victim&apos;s email from the URL ?hint= parameter</li>
  <li>Calls the C2 at /device/start with the hardcoded operator UUID 84eb384d-cd3e-4c90-a283-c960ce557913</li>
  <li>Displays the returned device code with a countdown timer (default: 900 seconds)</li>
  <li>Directs the victim to &#x201C;microsoft.com/devicelogin&#x201D;</li>
</ol>
<!--kg-card-end: html-->
<p>The kit includes <strong>persistAfterPassChange: false</strong>, an explicit signal that the operator understands refresh tokens are revoked on password reset and must exfiltrate data or escalate to PRT before the victim responds.</p><h3 id="xor-payload-encryption">XOR payload encryption</h3><p>The JavaScript payload is delivered encrypted with a 16-byte XOR key ([233,69,224,219,53,48,213,165,119,243,77,151,101,148,15,227]), decrypted at runtime. This differs from EvilTokens&apos; documented AES-GCM Web Crypto API encryption. The decoded sample analyzed here represents the inner payload after decryption consistent with EvilTokens&apos; delivery model of encrypting phishing content and decrypting client-side to evade static analysis by URL scanners.</p><h2 id="the-full-operator-toolkit">The full operator toolkit</h2><p>The ARToken panel&apos;s API surface reveals the complete post-compromise workflow available to operators:</p><h3 id="token-management-and-persistence">Token management and persistence</h3><p>Once a victim completes device code authentication, their captured token appears in the ARToken dashboard. Operators can:</p>
<!--kg-card-begin: html-->
<ul>
  <li>Refresh tokens to maintain access</li>
  <li>Escalate to PRT via the /prt/setup &#x2192; /prt/refresh &#x2192; /prt/cookie chain, achieving persistence that survives password resets</li>
  <li>Export and backup tokens in bulk</li>
  <li>Import tokens from external sources (enabling cross-platform token trading)</li>
  <li>Share tokens with other operators via generated links with granular permissions</li>
</ul>
<!--kg-card-end: html-->
<p>The UI advertises, &quot;PRT-enabled - Persists across password changes.&quot;</p><h3 id="email-operations-artsender">Email operations (ARTSender)</h3><p>The built-in BEC tool provides:</p>
<!--kg-card-begin: html-->
<ul>
  <li>Full Outlook inbox read access per compromised account</li>
  <li>Email sending as the victim with BCC batch support and configurable inter-send delays</li>
  <li>Inbox rule creation for forwarding and auto-deletion (evidence suppression)</li>
  <li>Keyword-based monitoring across all compromised accounts simultaneously</li>
  <li>Email attachment access and download</li>
</ul>
<!--kg-card-end: html-->
<h3 id="sharepoint-and-onedrive-access">SharePoint and OneDrive access</h3><p>Operators can browse, upload, download, and manage permissions on victim SharePoint sites and OneDrive files, enabling document theft and malicious file placement for lateral phishing.</p><h3 id="infrastructure-automation">Infrastructure automation</h3><p>The panel integrates directly with Cloudflare&apos;s API for:</p>
<!--kg-card-begin: html-->
<ul>
  <li>Authenticating via API token or Global API key</li>
  <li>Listing deployed Workers</li>
  <li>Deploying phishing templates directly to Workers from the panel</li>
  <li>Managing allowed origins and worker name prefixes</li>
  <li>Configuring device code proxy servers</li>
</ul>
<!--kg-card-end: html-->
<h3 id="desktop-session-browser-artbrowser">Desktop session browser (ARTBrowser)</h3><p>A standalone Windows application, functionally equivalent to EvilTokens&apos; &quot;Portal Browser,&quot; enables operators to browse victim Microsoft 365 sessions using captured tokens outside the web panel. The admin configures a download URL through the settings panel.</p><h3 id="capabilities-not-previously-documented">Capabilities not previously documented</h3><p>Several ARToken features extend beyond what Sekoia&apos;s research covered:</p>
<!--kg-card-begin: html-->
<table>
  <tr>
    <th style="width:20%">Capability</th>
    <th>Description</th>
  </tr>
  <tr>
    <td>Box Monitor</td>
    <td>Cross-account keyword monitoring. Operators define terms and receive matches from all compromised mailboxes</td>
  </tr>
  <tr>
    <td>Inbox rule manipulation</td>
    <td>Programmatic creation of forwarding and hiding rules for evidence suppression</td>
  </tr>
  <tr>
    <td>Token import</td>
    <td>Ingest tokens captured by other tools or purchased externally</td>
  </tr>
  <tr>
    <td>Shared access links</td>
    <td>Collaborative token access between operators with role-based permissions</td>
  </tr>
  <tr>
    <td>Geo-dynamic templates</td>
    <td>Lure placeholders ({city}, {country_code}, {state}) that resolve based on victim geolocation</td>
  </tr>
  <tr>
    <td>Full SharePoint operations</td>
    <td>Site resolution, file upload/download, permission management</td>
  </tr>
</table>
<!--kg-card-end: html-->
<p>These features indicate the platform is more mature than a simple device code phishing kit &#x2014; it is a complete BEC operations environment.</p><h2 id="mitre-attck-techniques">MITRE ATT&amp;CK techniques&#xA0;</h2>
<!--kg-card-begin: html-->
<table>
  <tr>
    <th>Tactic</th>
    <th>Technique</th>
    <th>ID</th>
  </tr>
  <tr>
    <td>Initial Access</td>
    <td>Phishing: Spearphishing Link</td>
    <td style="width:13%">T1566.002</td>
  </tr>
  <tr>
    <td>Credential Access</td>
    <td>Steal Application Access Token</td>
    <td>T1528</td>
  </tr>
  <tr>
    <td>Persistence</td>
    <td>Account Manipulation: Additional Cloud Credentials</td>
    <td>T1098.001</td>
  </tr>
  <tr>
    <td>Collection</td>
    <td>Email Collection: Remote Email Collection</td>
    <td>T1114.002</td>
  </tr>
  <tr>
    <td>Lateral Movement</td>
    <td>Use Alternate Authentication Material: Application Access Token</td>
    <td>T1550.001</td>
  </tr>
  <tr>
    <td>Impact</td>
    <td>Account Access Removal</td>
    <td>T1531</td>
  </tr>
  <tr>
    <td>Resource Development</td>
    <td>Acquire Infrastructure: Web Services</td>
    <td>T1583.006</td>
  </tr>
  <tr>
    <td>Stealth</td>
    <td>Obfuscated Files or Information</td>
    <td>T1027</td>
  </tr>
  <tr>
    <td>Stealth</td>
    <td>Virtualization/Sandbox Evasion: System Checks</td>
    <td>T1497.001</td>
  </tr>
</table>
<!--kg-card-end: html-->
<h2 id="indicators-of-compromise">Indicators of compromise</h2><p>The IOCs can also be found in our GitHub repository&#xA0;<a href="https://github.com/Cisco-Talos/IOCs/blob/main/2026/07/" rel="noreferrer">here</a>.</p>]]></content:encoded></item><item><title><![CDATA[Beyond IOCs: AI-enabled threat intelligence]]></title><description><![CDATA[In this week’s newsletter, Martin considers how AI will help threat intelligence by creating an easily queryable data source of intelligence reports.]]></description><link>https://blog.talosintelligence.com/beyond-iocs-ai-enabled-threat-intelligence/</link><guid isPermaLink="false">6a3bf17f8d8d330001fb7ce7</guid><category><![CDATA[Threat Source newsletter]]></category><dc:creator><![CDATA[Martin Lee]]></dc:creator><pubDate>Thu, 25 Jun 2026 18:00:26 GMT</pubDate><media:content url="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/threat_source-3.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/threat_source-3.jpg" alt="Beyond IOCs: AI-enabled threat intelligence"><p>Welcome to this week&#x2019;s Threat Source newsletter.&#xA0;</p><p>The issue of AI in cybersecurity is often portrayed as a binary choice: either a force multiplier for our adversaries, or a tool bringing professional obsolescence. The reality is more nuanced. While AI certainly brings some advantage to attackers, it also offers advantages to the defender, notably in how we manage, index, and derive value from threat intelligence.&#xA0;</p><p>Currently, our industry excels in the use and dissemination of indicators of compromise (IOCs). These atomic indicators fit neatly into key-value data stores and their value can be enhanced with added context, neatly structured in STIX/MISP format. However, this is only the tactical layer.&#xA0;</p><p>Ultimately, we want the consumers of threat intelligence reports to develop their knowledge and to build a picture of the relevance of the threat to their own situation, along with understanding of how they can respond given their resources and constraints. This capability is conferred by the natural language found within strategic and operational intelligence briefings.&#xA0;</p><p>These reports provide the context required for meaningful response, yet they remain notoriously difficult to index. We are often left with disparate incident reports, darknet monitoring, and malware analysis that fail to cross-reference effectively, further complicated by inconsistent naming conventions for threat actors.&#xA0;</p><p>This is a problem that large language models (LLMs) may be able to solve. Although AI models have no real understanding of an issue, they can identify synonyms and relate entities across vast, unstructured datasets. This can only make the retrieval of relevant threat intelligence reports easier, and facilitate the generation of relevant advice to protect against threats.&#xA0;</p><p>There are still issues to resolve. We need to be vigilant regarding the veracity of the data that LLMs ingest, and of the confidentiality of the queries made of such a system. However, the development of personal, domain-specific LLMs offers the possibility of a world of integrated threat intelligence where relevant reports from disparate sources can be easily retrieved, and specific advice returned to even the vaguest of queries.&#xA0;</p><p>Rather than fearing AI&#x2019;s potential negative effects on our employment, we can consider AI&#x2019;s development as a powerful tool that enables access to threat intelligence reports and allows us to provide tailored actionable advice faster to those who need to know it. Ultimately, AI can help us do what we do best: making a difference and making the bad guy&#x2019;s lives harder.&#xA0;</p><h2 id="the-one-big-thing">The one big thing&#xA0;</h2><p>Cisco Talos is highlighting how Windows threats <a href="https://blog.talosintelligence.com/introduction-to-com-usage-by-windows-threats" rel="noreferrer noopener"><u>increasingly abuse the Component Object Model (COM)</u></a> to execute malicious activities. While COM is a fundamental Windows technology for legitimate inter-process communication, malware families like Qakbot and WarmCookie hijack it for lateral movement, persistence, and evasion. Because COM functionality relies on opaque GUIDs and indirect vtable calls, it obscures the attacker&apos;s intent and makes manual analysis incredibly labor-intensive.&#xA0;</p><h3 id="why-do-i-care">Why do I care?&#xA0;</h3><p>Threat actors love COM because it provides convenient access to built-in Windows functionality while making static analysis a nightmare. By hiding malicious behavior behind indirect function calls, attackers easily bypass basic scrutiny and blend in with legitimate system processes. Adversaries are effectively turning Windows&apos; own architecture against itself. If analysts aren&apos;t prioritizing COM during triage, they are likely missing critical pieces of the infection chain.&#xA0;</p><h3 id="so-now-what">So now what?&#xA0;</h3><p>Defenders must sharpen their skills in recognizing COM usage and translating evidence like ProgIDs and vtable offsets into human-readable actions. Leverage specialized tools like OleView.NET, IDA&#x2019;s COM Helper, and DispatchLogger to map anonymous indirect calls to clear behaviors. Security teams should also build static hunting logic to track these threats. You can find a simplified YARA hunting rule for binaries referencing the Task Scheduler COM class in the <a href="https://blog.talosintelligence.com/introduction-to-com-usage-by-windows-threats" rel="noreferrer noopener"><u>full blog post</u></a>.&#xA0;</p><h2 id="top-security-headlines-of-the-week">Top security headlines of the week&#xA0;</h2><p><strong>FortiBleed campaign used custom FortiGate sniffer to steal credentials</strong>&#xA0;<br>Security firm SOCRadar says the large-scale FortiBleed campaign targeting Fortinet FortiGate devices used custom sniffers to harvest authentication secrets from compromised firewalls and steal credentials. (<a href="https://www.bleepingcomputer.com/news/security/fortibleed-campaign-used-custom-fortigate-sniffer-to-steal-credentials/" rel="noreferrer noopener"><u>BleepingComputer</u></a>)&#xA0;</p><p><strong>Scattered Spider hackers plead guilty on Day 1 of trial</strong>&#xA0;<br>Two men pleaded guilty in the United Kingdom this week to criminal charges stemming from an August 2024 cyber attack affecting&#xA0;Transport for London, the entity responsible for the public transport network in the Greater London area. (<a href="https://krebsonsecurity.com/2026/06/scattered-spider-hackers-plead-guilty-on-day-1-of-trial/" rel="noreferrer noopener"><u>Krebs on Security</u></a>)&#xA0;</p><p><strong>Klue says hackers stole credential from 2022 that led to customer data breaches</strong>&#xA0;<br>Market research company Klue has confirmed that a credential dating back to 2022, which was part of a limited pilot, was used by hackers earlier this month to steal data from its corporate customers, including several cybersecurity companies. (<a href="https://techcrunch.com/2026/06/23/klue-says-hackers-stole-credential-from-2022-that-led-to-customer-data-breaches/" rel="noreferrer noopener"><u>TechCunch</u></a>)&#xA0;</p><p><strong>New exploit bypasses Apple&#x2019;s boot defenses, affects millions of iPhones</strong>&#xA0;<br>Baked permanently into the device&#x2019;s SoC, SecureROM is the first code an iPhone runs on startup and the foundation of Apple&#x2019;s entire secure boot chain. The exploit chains a USB controller bug and a device firmware configuration weakness.&#xA0;(<a href="https://www.securityweek.com/new-exploit-bypasses-apples-boot-defenses-affects-millions-of-iphones/" rel="noreferrer noopener"><u>SecurityWeek</u></a>)&#xA0;</p><p><strong>Windows 11 KB5095093 update rolls out new Point-in-Time restore feature</strong>&#xA0;<br>This update introduces numerous new features, including a standout Point-in-Time Restore feature that allows Windows users to easily roll back their operating system, applications, and files to a previous point in time. (<a href="https://www.bleepingcomputer.com/news/microsoft/windows-11-kb5095093-update-rolls-out-new-point-in-time-restore-feature/" rel="noreferrer noopener"><u>BleepingComputer</u></a>)&#xA0;</p><h2 id="can%E2%80%99t-get-enough-talos">Can&#x2019;t get enough Talos?&#xA0;</h2><p><a href="https://www.buzzsprout.com/2033817/episodes/19389393" rel="noreferrer noopener"><strong><u>AI is finding bugs faster. Now what?</u></strong></a>&#xA0;<br>In this episode of Beers with Talos, the team is joined by Nick Biasini to unpack what attackers are doing with AI-assisted vulnerability discovery, review FIFA World Cup threat trends, and phish the Pope.&#xA0;</p><p><a href="https://www.buzzsprout.com/2018149/episodes/19360999" rel="noreferrer noopener"><strong><u>Patching in the dark: Managing unknown threats in complex environments</u></strong></a>&#xA0;<br>If you&apos;re tired of being told to &quot;just patch,&quot; we understand. Amy and Pierre explore the logistical, technical, and business realities that make patching a complex, high-stakes operation rather than a simple button click &#x2014; and break down the things defenders often miss that build true resilience in organizations.&#xA0;</p><p><a href="https://blog.talosintelligence.com/hypotheses-telemetry-and-human-judgment-inside-cisco-talos-threat-hunting/" rel="noreferrer noopener"><strong><u>Hypotheses, telemetry, and human judgment: Inside Cisco Talos Threat Hunting</u></strong></a>&#xA0;<br>Learn how Cisco Talos Threat Hunting uses hypothesis-driven methods and multi-domain telemetry correlation to find stealthy threats operating below automated detection thresholds.&#xA0;</p><h2 id="upcoming-events-where-you-can-find-talos">Upcoming events where you can find Talos&#xA0;</h2><ul><li><a href="https://blackhat.com/us-26/" rel="noreferrer noopener"><u>Black Hat USA</u></a> (Aug. 1 &#x2013; 6) Las Vegas, NV&#xA0;</li><li><a href="https://defcon.org/html/defcon-34/dc-34-index.html" rel="noreferrer noopener"><u>DEF CON 34</u></a> (Aug. 6 &#x2013; 9) Las Vegas, NV&#xA0;</li></ul><h2 id="most-prevalent-malware-files-from-talos-telemetry-over-the-past-week">Most prevalent malware files from Talos telemetry over the past week&#xA0;</h2><p><strong>SHA256: 9f1f11a708d393e0a4109ae189bc64f1f3e312653dcf317a2bd406f18ffcc507</strong> &#xA0;<br>MD5: 2915b3f8b703eb744fc54c81f4a9c67f &#xA0;<br>Talos Rep: <a href="https://talosintelligence.com/talos_file_reputation?s=9f1f11a708d393e0a4109ae189bc64f1f3e312653dcf317a2bd406f18ffcc507" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=9f1f11a708d393e0a4109ae189bc64f1f3e312653dcf317a2bd406f18ffcc507</u></a> &#xA0;<br>Example Filename: VID001.exe &#xA0;<br>Detection Name: Win.Worm.Coinminer::1201**&#xA0;</p><p><strong>SHA256: 9896a6fcb9bb5ac1ec5297b4a65be3f647589adf7c37b45f3f7466decd6a4a7f</strong>&#xA0;<br>MD5: 38de5b216c33833af710e88f7f64fc98 &#xA0;<br>Talos Rep: <a href="https://talosintelligence.com/talos_file_reputation?s=9896a6fcb9bb5ac1ec5297b4a65be3f647589adf7c37b45f3f7466decd6a4a7f" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=9896a6fcb9bb5ac1ec5297b4a65be3f647589adf7c37b45f3f7466decd6a4a7f</u></a>&#xA0;<br>Example Filename: SECOH-QAD.exe&#xA0;<br>Detection Name: Win.Tool.Procpatcher::1201&#xA0;</p><p><strong>SHA256: afc8a00883a4ea07df2dc1d4ed02f8a23b35c9456413b438a2d9ce3ae5076638</strong>&#xA0;<br>MD5: cc4d231df34e57f59eb970353c7d9de2 &#xA0;<br>Talos Rep: <a href="https://talosintelligence.com/talos_file_reputation?s=afc8a00883a4ea07df2dc1d4ed02f8a23b35c9456413b438a2d9ce3ae5076638" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=afc8a00883a4ea07df2dc1d4ed02f8a23b35c9456413b438a2d9ce3ae5076638</u></a>&#xA0;<br>Example Filename: AutoPico.exe &#xA0;<br>Detection Name: PUA.Win.Tool.Kmsactivator::1201&#xA0;</p><p><strong>SHA256: e60ab99da105ee27ee09ea64ed8eb46d8edc92ee37f039dbc3e2bb9f587a33ba</strong>&#xA0;<br>MD5: dbd8dbecaa80795c135137d69921fdba&#xA0;<br>Talos Rep: <a href="https://talosintelligence.com/talos_file_reputation?s=e60ab99da105ee27ee09ea64ed8eb46d8edc92ee37f039dbc3e2bb9f587a33ba" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=e60ab99da105ee27ee09ea64ed8eb46d8edc92ee37f039dbc3e2bb9f587a33ba</u></a>&#xA0;<br>Example Filename: u992574.dll &#xA0;<br>Detection Name: W32.Variant:MalwareXgenMisc.29d4.1201&#xA0;</p><p><strong>SHA256: 853baab97b1f3b03c1ffa55797e87867f5fb7ce33457411f56afd270cb395453</strong>&#xA0;<br>MD5: 41acb30b9d662d48b7b4fc0ac3d4b79f&#xA0;<br>Talos Rep: <a href="https://talosintelligence.com/talos_file_reputation?s=853baab97b1f3b03c1ffa55797e87867f5fb7ce33457411f56afd270cb395453" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=853baab97b1f3b03c1ffa55797e87867f5fb7ce33457411f56afd270cb395453</u></a>&#xA0;<br>Example Filename: SignInfoConsole.exe&#xA0;<br>Detection Name: W32.853BAAB97B.in12.Talos</p>]]></content:encoded></item><item><title><![CDATA[Introduction to COM usage by Windows threats]]></title><description><![CDATA[Component Object Model (COM) is a fundamental Windows technology used by legitimate applications for object activation, inter-process communication, automation and language-independent component reuse. Those same qualities make it useful to threat actors. ]]></description><link>https://blog.talosintelligence.com/introduction-to-com-usage-by-windows-threats/</link><guid isPermaLink="false">6a3bcd1c8d8d330001fb7c45</guid><category><![CDATA[Threats]]></category><dc:creator><![CDATA[Vanja Svajcer]]></dc:creator><pubDate>Thu, 25 Jun 2026 10:00:26 GMT</pubDate><media:content url="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/GenericCiscoTalos-Header-1.webp" medium="image"/><content:encoded><![CDATA[<ul><li>Component&#xA0;Object Model (COM)&#xA0;is a fundamental Windows technology used by legitimate applications for object activation, inter-process communication,&#xA0;automation&#xA0;and language-independent&#xA0;component&#xA0;reuse. Those same qualities make it useful to&#xA0;threat&#xA0;actors.&#xA0;</li><li>Malware&#xA0;frequently&#xA0;uses COM interfaces for lateral movement, execution, download and exfiltration, persistence, evasion, system discovery and automation of built-in Windows and Office functionality.&#xA0;</li><li>Reverse engineering COM-heavy binaries&#xA0;requires&#xA0;researchers to move from opaque GUIDs and indirect&#xA0;vtable&#xA0;calls to meaningful classes,&#xA0;interfaces&#xA0;and method names.&#xA0;&#xA0;</li><li>This post is based on research conducted for presentations at AVAR 2025 conference in Kuala Lumpur and&#xA0;a&#xA0;CARO 2026 workshop in Innsbruck.</li></ul><hr><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/GenericCiscoTalos-Header-1.webp" alt="Introduction to COM usage by Windows threats"><p><a href="https://learn.microsoft.com/en-us/windows/win32/com/component-object-model--com--portal" rel="noreferrer noopener"><u>Component Object Model (COM)</u></a>&#xA0;is&#xA0;one of the Windows technologies that analysts regularly&#xA0;encounter&#xA0;but may not always prioritize during triage, as the manual analysis of COM functionality in binary executable files can be labor-intensive.</p><p>The post starts with a brief introduction into COM, following how binaries&#xA0;utilizing&#xA0;COM can be analyzed,&#xA0;and some examples of malware families and their usage of COM.&#xA0;The post concludes with a list of further resources.&#xA0;&#xA0;</p><h2 id="com-as-windows-glue">COM as Windows glue&#xA0;</h2><p>COM&#xA0;is an application binary interface (ABI) model for reusing software components. COM objects expose interfaces to client applications, and those interfaces can be consumed by multiple programming languages because the contract exists at the binary interface level rather than at a single language runtime level.&#xA0;COM is&#xA0;a fundamental,&#xA0;principal&#xA0;way&#xA0;for components written in different languages to communicate.&#xA0;&#xA0;</p><p>Microsoft describes COM as a distributed, object-oriented system for creating binary software components that can interact with each other. COM is also the foundation for technologies such as OLE and ActiveX.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/windows-threats-COM.jpg" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="1397" height="999" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/windows-threats-COM.jpg 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/06/windows-threats-COM.jpg 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/windows-threats-COM.jpg 1397w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 1. COM acts as</em></i> <i><em class="italic" style="white-space: pre-wrap;">glue</em></i> <i><em class="italic" style="white-space: pre-wrap;">between</em></i> <i><em class="italic" style="white-space: pre-wrap;">component</em></i> <i><em class="italic" style="white-space: pre-wrap;">consumers and</em></i> <i><em class="italic" style="white-space: pre-wrap;">component</em></i> <i><em class="italic" style="white-space: pre-wrap;">providers written in different languages.</em></i> <i><em class="italic" style="white-space: pre-wrap;">Credit</em></i> <i><em class="italic" style="white-space: pre-wrap;">for original figure: James Forshaw, Google Project Zero.</em></i></figcaption></figure><p>This language independence is visible in common scripting and automation patterns. The same&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/com/com-clients-and-servers" rel="noreferrer noopener"><u>COM object</u></a>&#xA0;may be created from VBScript, PowerShell, Python,&#xA0;or C/C++. For example, a script can instantiate the&#xA0;<code>WScript.Shell</code>&#xA0;COM object and use it to read or write registry values, execute a command, create shortcuts,&#xA0;or access environment variables&#xA0;&#x2014;&#xA0;and it can do it in a very similar way using different scripting languages supporting COM automation.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-53238f08-d97e-4b97-812a-eeeecbd9b9df.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="936" height="415" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/data-src-image-53238f08-d97e-4b97-812a-eeeecbd9b9df.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-53238f08-d97e-4b97-812a-eeeecbd9b9df.png 936w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 2. As a glue between</em></i> <i><em class="italic" style="white-space: pre-wrap;">component</em></i> <i><em class="italic" style="white-space: pre-wrap;">consumers and</em></i> <i><em class="italic" style="white-space: pre-wrap;">component</em></i> <i><em class="italic" style="white-space: pre-wrap;">providers, languages such as VBS, PowerShell and Python can use it to access Windows services. </em></i></figcaption></figure><h2 id="dcom-extends-the-same-model-across-the-network">DCOM extends the same model across the network&#xA0;</h2><p><a href="https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dcom/4a893f3d-bd29-48cd-9f43-d9777a4415b0" rel="noreferrer noopener"><u>Distributed COM (DCOM)</u></a>&#xA0;extends COM so a client can activate and use COM objects on another system.&#xA0;At&#xA0;a high level, the local client talks to a proxy, the remote server exposes a stub, and the COM runtime transports the&#xA0;method&#xA0;invocation over&#xA0;Microsoft RPC.&#xA0;&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/windows-threats-DCOM.jpg" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="1460" height="999" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/windows-threats-DCOM.jpg 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/06/windows-threats-DCOM.jpg 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/windows-threats-DCOM.jpg 1460w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 2. DCOM uses proxy and stub classes with the COM and RPC runtimes to carry method calls between</em></i> <i><em class="italic" style="white-space: pre-wrap;">component</em></i> <i><em class="italic" style="white-space: pre-wrap;">consumers and providers.</em></i> <i><em class="italic" style="white-space: pre-wrap;">Credit for original figure: James Forshaw, Google Project Zero.</em></i></figcaption></figure><p>The&#xA0;existence of&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/combaseapi/nf-combaseapi-cocreateinstanceex" rel="noreferrer noopener"><u>CoCreateInstanceEx</u></a>&#xA0;API&#xA0;in a binary, with the&#xA0;appropriate parameters, can be used&#xA0;to distinguish between local COM and DCOM. DCOM&#xA0;extends local COM activation by allowing an object to be associated with a specified remote computer. DCOM is also explicitly represented in MITRE ATT&amp;CK as&#xA0;one of the techniques and is described in&#xA0;<a href="https://attack.mitre.org/techniques/T1021/003/" rel="noreferrer noopener"><u>Remote Services: Distributed Component Object Model, T1021.003</u></a>.&#xA0;</p><h2 id="classes-interfaces-and-the-registry">Classes, interfaces,&#xA0;and the registry&#xA0;</h2><p>Classes and interfaces are two foundational COM concepts.&#xA0;</p><p>COM classes&#xA0;are&#xA0;templates for creating COM objects. A class is&#xA0;identified&#xA0;by a class identifier (CLSID),&#xA0;a GUID that uniquely identifies the component.</p><p><a href="https://learn.microsoft.com/en-us/windows/win32/com/com-technical-overview" rel="noreferrer noopener"><u>GUID</u></a>&#xA0;is a 128-bit identifier used to uniquely&#xA0;identify&#xA0;COM-related objects and interfaces. The&#xA0;string representation&#xA0;of a GUID&#xA0;is common in&#xA0;the Windows registry, scripts,&#xA0;and configuration text.&#xA0;It is typically formatted as:&#xA0;</p>
<!--kg-card-begin: html-->
<pre>{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}&#xA0;</pre>
<!--kg-card-end: html-->
<p>A GUID can also appear as a binary structure in a compiled executable. In&#xA0;a binary, the first three fields are typically stored in little-endian byte order, which is why byte-pattern searches for GUIDs differ from the familiar string form.&#xA0;Readers should be aware that many malware families assemble GUID structure dynamically on the stack before&#xA0;attempting&#xA0;to create a new object&#xA0;in order to&#xA0;make the analysis process harder.&#xA0;</p><p>Interfaces are&#xA0;also&#xA0;represented&#xA0;by interface identifiers (IIDs),&#xA0;which&#xA0;also&#xA0;have&#xA0;the&#xA0;GUID&apos;s&#xA0;data type. Interfaces define methods&#xA0;an&#xA0;object exposes to&#xA0;clients. The foundational COM interface is&#xA0;<code>IUnknown</code>, which exposes functions <code>QueryInterface</code>,&#xA0;<code>AddRef</code>,&#xA0;and&#xA0;<code>Release</code>. Every COM interface&#xA0;ultimately derives&#xA0;from it.&#xA0;</p><p>COM registration data is stored in the Windows registry. Classes can be inspected under&#xA0;<code>HKEY_CLASSES_ROOT\CLSID</code>, while interface registrations can be found under&#xA0;<code>HKEY_CLASSES_ROOT\Interface</code>. On a typical Windows installation, the number of registered classes can easily reach into the thousands and changes based on Windows version, optional components,&#xA0;and installed software.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-e6ddc645-c462-4222-9790-8f40ce89844f.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="560" height="289"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 3. COM class information in the registry. The exact classes and interfaces available vary by</em></i> <i><em class="italic" style="white-space: pre-wrap;">OS</em></i> <i><em class="italic" style="white-space: pre-wrap;">and installed software.</em></i></figcaption></figure><p>&#xA0;A common example used in malware is the Windows&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/taskschd/task-scheduler-start-page" rel="noreferrer noopener"><u>Task Scheduler service</u></a>. The newer Task Scheduler 2.0 COM class is commonly referenced by the&#xA0;CLSID <code>{0F87369F-A4E5-4CFC-BD3E-73E6154572DD}</code>. The&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/taskschd/nn-taskschd-itaskservice" rel="noreferrer noopener"><u>ITaskService</u></a>&#xA0;interface has&#xA0;IID <code>{2FABA4C7-4DA9-4013-9697-20CC3FD40F85}</code>&#xA0;and provides access to the Task Scheduler service for managing registered tasks.&#xA0;<code>ITaskService::Connect</code>&#xA0;should be called before using other&#xA0;<code>ITaskService</code>&#xA0;methods. Older Task Scheduler 1.0 samples may instead use the&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/mstask/nn-mstask-itaskscheduler" rel="noreferrer noopener"><u>ITaskScheduler</u></a>&#xA0;interface, which appears in the&#xA0;WarmCookie&#xA0;case study below.&#xA0;</p><p>A program&#xA0;usually loads&#xA0;a&#xA0;COM class by specifying its&#xA0;CLSID, requests a&#xA0;specific interface by specifying its&#xA0;IID,&#xA0;and&#xA0;receives an interface pointer&#xA0;which points in memory at the beginning of the virtual function table (vtable) for the object.&#xA0;The interface methods are called&#xA0;indirectly through a&#xA0;vtable.&#xA0;&#xA0;</p><p>Without type information, the analyst may only see something like:&#xA0;</p>
<!--kg-card-begin: html-->
<pre>call&#xA0;qword&#xA0;ptr&#xA0;[rax+38h]&#xA0;</pre>
<!--kg-card-end: html-->
<p>With the correct interface&#xA0;recognized and renamed, the same call can become meaningful, which is our main goal when analyzing malware&#xA0;utilizing&#xA0;COM:&#xA0;</p>
<!--kg-card-begin: html-->
<pre>call&#xA0;qword&#xA0;ptr&#xA0;[pTaskServiceVtbl.Connect]&#xA0;</pre>
<!--kg-card-end: html-->
<h2 id="basic-com-concepts-for-reverse-engineers">Basic COM concepts for reverse engineers&#xA0;</h2><h3 id="com-clients-servers-and-progids">COM clients, servers,&#xA0;and ProgIDs&#xA0;</h3><p>A&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/com/com-clients-and-servers" rel="noreferrer noopener"><u>COM client</u></a>&#xA0;is any code that obtains a pointer to a COM interface and calls methods through that pointer. A&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/com/com-clients-and-servers" rel="noreferrer noopener"><u>COM server</u></a>&#xA0;is the&#xA0;component&#xA0;that implements the object behind the interface. The two sides may be in the same process, in different processes on the same host,&#xA0;or on different hosts through DCOM.&#xA0;Malware&#xA0;is most commonly just a COM client.&#xA0;Malicious COM servers are&#xA0;encountered&#xA0;less&#xA0;frequently&#xA0;and are outside of the scope of this&#xA0;blog.&#xA0;</p><p>The client&#xA0;asks&#xA0;the&#xA0;COM&#xA0;runtime, implemented in ole32.dll or combase.dll,&#xA0;to instantiate a class&#xA0;(identified&#xA0;by a CLSID)&#xA0;and to return a specific interface&#xA0;(identified&#xA0;by an IID).&#xA0;The&#xA0;<code>dwClsContext</code>&#xA0;argument supplied to activation APIs such as <a href="https://learn.microsoft.com/en-us/windows/win32/api/combaseapi/nf-combaseapi-cocreateinstance" rel="noreferrer noopener"><u>CoCreateInstance</u></a> tells COM which server locations are acceptable. For reverse engineers, the CLSCTX flags&#xA0;provide a&#xA0;useful context,&#xA0;as&#xA0;they&#xA0;indicate&#xA0;whether the sample is trying to load a DLL into its own process, talk to a local EXE or service, or reach a remote DCOM server.</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/windows-threats.jpg" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="2000" height="800" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/windows-threats.jpg 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/06/windows-threats.jpg 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/06/windows-threats.jpg 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w2400/2026/06/windows-threats.jpg 2400w" sizes="(min-width: 720px) 720px"></figure><p>&#xA0;A&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/com/-progid--key" rel="noreferrer noopener"><u>ProgID</u></a>, or programmatic identifier, is a human-readable registry entry that can be associated with a COM class. Examples include&#xA0;<code>WScript.Shell</code>,&#xA0;<code>Shell.Application</code>,&#xA0;<code>Excel.Application</code>,&#xA0;<code>MSXML2.XMLHTTP</code>&#xA0;and&#xA0;<code>WinHttp.WinHttpRequest.5.1</code>. The registry maps a ProgID to a CLSID, and higher-level languages often use the ProgID directly through functions such as&#xA0;CreateObject&#xA0;or PowerShell&#x2019;s New-Object -ComObject. Native code can call&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/combaseapi/nf-combaseapi-clsidfromprogid" rel="noreferrer noopener"><u>CLSIDFromProgID</u></a>&#xA0;to resolve the string to a CLSID before activation. In binaries, the analyst may therefore see either a readable ProgID string, a string-form GUID, or the little-endian binary representation of the CLSID.&#xA0;</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-43015bcc-24d2-4ae9-9b30-c80d7b929a9f.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="936" height="355" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/data-src-image-43015bcc-24d2-4ae9-9b30-c80d7b929a9f.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-43015bcc-24d2-4ae9-9b30-c80d7b929a9f.png 936w" sizes="(min-width: 720px) 720px"></figure><h3 id="what-cocreateinstance-does-for-an-in-process-server">What&#xA0;CoCreateInstance&#xA0;does for an in-process server&#xA0;</h3><p>A typical native COM client starts by initializing the COM runtime for the current thread with&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/combaseapi/nf-combaseapi-coinitializeex" rel="noreferrer noopener"><u>CoInitializeEx</u></a>&#xA0;or&#xA0;<code>CoInitialize</code>. In code that will communicate across process or machine boundaries, the client may also configure process-wide COM security with&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/combaseapi/nf-combaseapi-coinitializesecurity" rel="noreferrer noopener"><u>CoInitializeSecurity</u></a>. After that, the client activates a class, receives an interface pointer, calls methods through the interface,&#xA0;and releases the pointer when finished.&#xA0;</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-47405258-c029-44e5-831d-ed0e0d8b5f30.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="936" height="543" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/data-src-image-47405258-c029-44e5-831d-ed0e0d8b5f30.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-47405258-c029-44e5-831d-ed0e0d8b5f30.png 936w" sizes="(min-width: 720px) 720px"></figure><p>For an in-process server,&#xA0;<code>CoCreateInstance</code>&#xA0;is a convenience wrapper around the class-factory path. COM resolves the CLSID registration,&#xA0;locates&#xA0;the in-process server DLL for the current&#xA0;bitness, loads the DLL if necessary,&#xA0;and asks the DLL for a class object. That class object usually implements&#xA0;the interface&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/unknwn/nn-unknwn-iclassfactory" rel="noreferrer noopener"><u>IClassFactory</u></a>. COM then asks the class factory to create the object and return the requested interface pointer.&#xA0;</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-9d7613c7-0ce2-40d2-8105-d7b777a6ac5e.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="892" height="690" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/data-src-image-9d7613c7-0ce2-40d2-8105-d7b777a6ac5e.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-9d7613c7-0ce2-40d2-8105-d7b777a6ac5e.png 892w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://learn.microsoft.com/en-us/windows/win32/api/combaseapi/nf-combaseapi-dllgetclassobject" rel="noreferrer noopener"><u>DllGetClassObject</u></a>&#xA0;is the&#xA0;main&#xA0;activation export&#xA0;and&#xA0;COM calls it to retrieve a class object for the requested CLSID. <a href="https://learn.microsoft.com/en-us/windows/win32/api/olectl/nf-olectl-dllregisterserver" rel="noreferrer noopener"><u>DllRegisterServer</u></a> and&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/com/self-registration" rel="noreferrer noopener"><u>DllUnregisterServer</u></a>&#xA0;are self-registration exports used by installers or regsvr32-style workflows to create or remove registry entries; they are not part of the&#xA0;<code>CoCreateInstance</code>&#xA0;call path.&#xA0;</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-adb56df3-9c70-4b49-9994-33436b3fbc13.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="936" height="292" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/data-src-image-adb56df3-9c70-4b49-9994-33436b3fbc13.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-adb56df3-9c70-4b49-9994-33436b3fbc13.png 936w" sizes="(min-width: 720px) 720px"></figure><p>&#xA0;A local-server COM EXE follows the same class-factory idea,&#xA0;but the registration points to an executable or service rather than an in-process DLL. The server process typically registers its class object with the COM runtime, and clients receive an interface proxy when the&#xA0;object lives outside the&#xA0;client&#xA0;process. DCOM extends this model to another machine and adds remote activation, RPC transport, authentication,&#xA0;and impersonation state.&#xA0;</p><h3 id="iunknown-object-identity-and-vtable-layout"><strong>IUnknown, object identity,</strong>&#xA0;<strong>and</strong>&#xA0;<strong>vtable</strong>&#xA0;<strong>layout&#xA0;</strong></h3><p>Every COM interface derives from&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/unknwn/nn-unknwn-iunknown" rel="noreferrer noopener"><u>IUnknown</u></a>. The first three entries in a COM&#xA0;vtable&#xA0;are&#xA0;<code>QueryInterface</code>,&#xA0;<code>AddRef</code>,&#xA0;and&#xA0;<code>Release</code>, regardless of the higher-level interface being used.&#xA0;<code>QueryInterface</code>&#xA0;lets a client ask whether the object supports another interface&#xA0;identified&#xA0;by an IID.&#xA0;<code>AddRef</code>&#xA0;and&#xA0;<code>Release</code>&#xA0;implement&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/com/implementing-reference-counting" rel="noreferrer noopener"><u>reference counting</u></a>&#xA0;so that objects can manage their lifetime across language boundaries, DLL&#xA0;boundaries&#xA0;and proxy/stub boundaries without relying on a language-specific garbage collector or destructor model.&#xA0;</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-a27554fb-b022-491b-ae0b-f533eb9e5146.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="936" height="334" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/data-src-image-a27554fb-b022-491b-ae0b-f533eb9e5146.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-a27554fb-b022-491b-ae0b-f533eb9e5146.png 936w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/windows-threats2.jpg" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="2000" height="978" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/windows-threats2.jpg 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/06/windows-threats2.jpg 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/06/windows-threats2.jpg 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w2400/2026/06/windows-threats2.jpg 2400w" sizes="(min-width: 720px) 720px"></figure><h3 id="com-activation-and-call-security">COM activation and call security&#xA0;</h3><p><a href="https://learn.microsoft.com/en-us/windows/win32/api/combaseapi/nf-combaseapi-coinitializesecurity" rel="noreferrer noopener"><u>COM has its own security model</u></a>&#xA0;on top of normal Windows process, token, registry,&#xA0;and file-system checks. Security is most visible for local-server and DCOM objects&#xA0;as&#xA0;activation and method calls cross a COM&#xA0;process or&#xA0;RPC boundary.</p><p>Activation security controls whether a client can launch or connect to a COM server. The COM Service Control Manager checks launch and activation permissions when a client requests an out-of-process or DCOM object. These permissions may come from&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/com/defaultlaunchpermission" rel="noreferrer noopener"><u>machine defaults</u></a>&#xA0;or from application-specific&#xA0;AppID&#xA0;configuration&#xA0;such as&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/com/launchpermission" rel="noreferrer noopener"><u>LaunchPermission</u></a>. A class can be registered and still fail activation if the caller&#x2019;s token is not&#xA0;permitted, if remote activation is disabled, if the server is not configured for remote use, or if required marshaling information is unavailable.&#xA0;</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/windows-threats3.jpg" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="2000" height="800" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/windows-threats3.jpg 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/06/windows-threats3.jpg 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/06/windows-threats3.jpg 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w2400/2026/06/windows-threats3.jpg 2400w" sizes="(min-width: 720px) 720px"></figure><p>Malware samples that call&#xA0;<code>CoInitializeSecurity</code>&#xA0;or&#xA0;<code>CoSetProxyBlanket</code>&#xA0;are often setting up the identity and authentication context needed for WMI, DCOM,&#xA0;or another out-of-process COM interface. For static analysis, the constants passed to these APIs help&#xA0;identify&#xA0;whether the sample expects local-only access, remote access, impersonation,&#xA0;or delegation.&#xA0;</p><h2 id="tooling-for-com-exploration">Tooling for COM exploration&#xA0;</h2><p>The first step in COM analysis is usually&#xA0;identification of classes and interfaces used by malware and understanding interfaces together with functions present in their&#xA0;vtables. Tools such as&#xA0;ComView&#xA0;and OleView.NET allow researchers to inspect&#xA0;classes, interfaces, type libraries, proxy/stub information,&#xA0;and method layouts&#xA0;registered on a system.&#xA0;</p><p><a href="https://github.com/tyranid/oleviewdotnet" rel="noreferrer noopener">OleView.NET</a>,&#xA0;developed&#xA0;by James Forshaw, is particularly useful&#xA0;since&#xA0;it combines a graphical interface with a PowerShell interface, making it suitable for both manual exploration and repeatable research workflows.&#xA0;</p><p><a href="https://web.archive.org/web/20251029175716/https:/www.japheth.de/Download/COMView.zip" rel="noreferrer noopener">ComView</a>&#xA0;is an older tool&#xA0;still available through internet archive.&#xA0;ComView&#xA0;contains&#xA0;offsets (in decimal) of a function address from the beginning of the&#xA0;vtable, which allows us to&#xA0;identify&#xA0;which functions are being called in the indirect calls&#xA0;observed&#xA0;in compiled executables. In the&#xA0;ComView&#xA0;screenshot below that displays the details of the&#xA0;<code>ITaskService</code>&#xA0;interface, we see that the connect method has offset 40 (28h) from the start of the&#xA0;vtable&#xA0;so any indirect call to a register + offset 28h after a client obtains a pointer to the interface can be transcribed as&#xA0;<code>ITaskService.Connect</code>&#xA0;to improve our understanding of the code functionality.&#xA0;&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-674408c6-23e9-4aac-ab43-02cdbcf11291.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="560" height="340"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 4.</em></i> <i><em class="italic" style="white-space: pre-wrap;">ComView</em></i> <i><em class="italic" style="white-space: pre-wrap;">showing a COM interface and method layout. This</em></i> <i><em class="italic" style="white-space: pre-wrap;">view helps analysts map</em></i> <i><em class="italic" style="white-space: pre-wrap;">vtable</em></i> <i><em class="italic" style="white-space: pre-wrap;">offsets to method names,</em></i> <i><em class="italic" style="white-space: pre-wrap;">as offsets are clearly visible in a specific column.&#xA0;</em></i></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-26908c50-fbc8-4a7a-a46f-7d87b5008ad3.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="560" height="321"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 5. OleView.NET can be used to inspect COM registrations and interface definitions</em></i> <i><em class="italic" style="white-space: pre-wrap;">in GUI and PowerShell form.&#xA0;</em></i></figcaption></figure><p>&#xA0;A&#xA0;manual&#xA0;reversing&#xA0;process&#xA0;would&#xA0;contain&#xA0;the following steps:&#xA0;</p><ol><li>Find calls to&#xA0;<code>CoCreateInstance</code>,&#xA0;<code>CoCreateInstanceEx</code>,&#xA0;<code>CLSIDFromProgID</code>,&#xA0;<code>CoGetObject</code>,&#xA0;<code>GetActiveObject</code>,&#xA0;<code>IDispatch::Invoke</code>,&#xA0;or related APIs.&#xA0;</li><li>Identify&#xA0;the CLSID and IID values passed into those calls.&#xA0;</li><li>Look up the class and&#xA0;interface&#xA0;definitions&#xA0;in the registry, Microsoft documentation, OleView.NET,&#xA0;ComView,&#xA0;or a COM database.&#xA0;</li><li>Map indirect&#xA0;vtable&#xA0;calls to interface methods based on architecture and interface layout.&#xA0;</li><li>Rename types, variables,&#xA0;and calls in the&#xA0;disassembler&#xA0;so the COM workflow becomes readable.&#xA0;</li></ol><p>For this research, we created a simple task scheduler sample written in C, which uses COM to create a Windows scheduled task that runs notepad.exe&#xA0;two&#xA0;minutes after it is created.&#xA0;To simplify the development, the sample was generated by a&#xA0;large language model (LLM).&#xA0;&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-5aea6083-618c-414b-874c-a896fbfb6db6.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="936" height="723" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/data-src-image-5aea6083-618c-414b-874c-a896fbfb6db6.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-5aea6083-618c-414b-874c-a896fbfb6db6.png 936w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 6. A simple Windows Scheduled task example is used to show usage of COM servers for the purpose of a manual analysis walkthrough.&#xA0;</em></i></figcaption></figure><p>We used&#xA0;our Task Scheduler sample to show how compiled&#xA0;binary&#xA0;code&#xA0;differs from&#xA0;its&#xA0;source code.&#xA0;We then reverse engineered&#xA0;the binary to show that&#xA0;once the&#xA0;<code>ITaskService</code>&#xA0;vtable&#xA0;is reconstructed, calls that initially look like generic indirect calls can be renamed to&#xA0;<code>Connect</code>,&#xA0;<code>NewTask</code>,&#xA0;<code>GetFolder</code>,&#xA0;<code>RegisterTaskDefinition</code>,&#xA0;and related methods.&#xA0;&#xA0;</p><p>A faster way&#xA0;to reach the same analysis stage&#xA0;is to use a plugin for your reverse-engineering tool that maps GUIDs to human-readable code. For example, in IDA Pro, the standard&#xA0;<a href="https://hex-rays.com/blog/igors-tip-of-the-week-93-com-reverse-engineering-and-com-helper" rel="noreferrer noopener"><u>COM Helper</u></a>&#xA0;can&#xA0;identify&#xA0;relevant class and&#xA0;interface&#xA0;IDs and rename locations in the database.&#xA0;&#xA0;</p><p>The remaining task for the analyst is to add the required&#xA0;interface&#x2019;s&#xA0;vtable&#xA0;structure to the list of code structures currently in use. For example, for&#xA0;<code>ITaskService</code>, we can add&#xA0;<code>ITaskServiceVtbl</code>&#xA0;to IDA Pro and apply the type wherever an indirect call is related to the instantiated interface pointer.</p><p>Still,&#xA0;having&#xA0;a thorough understanding is recommended,&#xA0;so that&#xA0;analysts&#xA0;can recognize calls to COM related functions and&#xA0;identify&#xA0;related indirect calls in a binary.&#xA0;&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-d1fd3cd7-66bc-439e-a460-6013ce2ebc68.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="560" height="498"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 7. IDA Pro analysis of a Task Scheduler COM example. Reconstructing the</em></i> <i><em class="italic" style="white-space: pre-wrap;">vtable</em></i> <i><em class="italic" style="white-space: pre-wrap;">lets the analyst map indirect calls to method names.&#xA0;</em></i></figcaption></figure><h3 id="applying-the-workflow-to-a-qakbot-dll">Applying the workflow to a&#xA0;Qakbot&#xA0;DLL&#xA0;</h3><p><a href="https://blog.talosintelligence.com/what-talos-incident-response-learned/" rel="noreferrer noopener"><u>Qakbot</u></a>,&#xA0;also known as&#xA0;Qbot&#xA0;or&#xA0;Pinkslipbot, is a long-running modular banking trojan that has been active since at least 2007 and evolved into a general-purpose malware delivery platform used by financially motivated actors. Early versions focused on credential theft and online banking fraud, but later campaigns added functionality for system reconnaissance, persistence, browser and credential harvesting, email collection, command execution,&#xA0;command and control (C2)&#xA0;communication, payload delivery,&#xA0;and movement inside enterprise environments.&#xA0;Qakbot&#xA0;was&#xA0;frequently&#xA0;distributed through phishing emails, including hijacked email threads, and was used as&#xA0;an initial&#xA0;access and loader&#xA0;component&#xA0;for follow-on malware and ransomware operations.&#xA0;</p><p>In the&#xA0;Qakbot&#xA0;DLL shown below,&#xA0;<code>CoInitializeSecurity</code>&#xA0;is called before the sample references&#xA0;<code>IID_IWbemLocator</code>, and&#xA0;<code>CoCreateInstance</code>&#xA0;creates an instance of the WMI locator class. The GUID is visible in binary form and can be used for&#xA0;type&#xA0;recovery inside the disassembler.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-473f00be-dad9-4239-937d-f3d64e210ae0.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="892" height="444" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/data-src-image-473f00be-dad9-4239-937d-f3d64e210ae0.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-473f00be-dad9-4239-937d-f3d64e210ae0.png 892w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 8.</em></i> <i><em class="italic" style="white-space: pre-wrap;">Qakbot</em></i> <i><em class="italic" style="white-space: pre-wrap;">DLL analysis in IDA Pro showing</em></i> <i><em class="italic" style="white-space: pre-wrap;">CoInitializeSecurity,</em></i> <i><em class="italic" style="white-space: pre-wrap;">IID_IWbemLocator</em></i> <i><em class="italic" style="white-space: pre-wrap;">and</em></i> <i><em class="italic" style="white-space: pre-wrap;">CLSID_WbemLocator</em></i> <i><em class="italic" style="white-space: pre-wrap;">around the</em></i> <i><em class="italic" style="white-space: pre-wrap;">CoCreateInstance</em></i> <i><em class="italic" style="white-space: pre-wrap;">call.&#xA0;</em></i></figcaption></figure><p>After the class and interface are&#xA0;identified, the next step is to apply the correct interface type to the returned pointer. In this case, the relevant structure is&#xA0;<code>IWbemLocatorVtbl</code>, and the method of interest is&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/wbemcli/nf-wbemcli-iwbemlocator-connectserver" rel="noreferrer noopener"><u>ConnectServer</u></a>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-bb1c0fd0-c3c8-436b-bfc8-299534b71a6d.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="777" height="508" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/data-src-image-bb1c0fd0-c3c8-436b-bfc8-299534b71a6d.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-bb1c0fd0-c3c8-436b-bfc8-299534b71a6d.png 777w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 9. IDA Pro COM type</em></i> <i><em class="italic" style="white-space: pre-wrap;">selection</em></i> <i><em class="italic" style="white-space: pre-wrap;">showing</em></i> <i><em class="italic" style="white-space: pre-wrap;">IWbemLocatorVtbl.ConnectServer</em></i> <i><em class="italic" style="white-space: pre-wrap;">as the function</em></i> <i><em class="italic" style="white-space: pre-wrap;">actually used</em></i> <i><em class="italic" style="white-space: pre-wrap;">in the indirect call.&#xA0;</em></i></figcaption></figure><p>&#xA0;The call&#xA0;through a register and offset maps to&#xA0;<code>IWbemLocator::ConnectServer</code>&#xA0;once the&#xA0;vtable&#xA0;type is applied.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-6cb288f1-9592-427b-a9df-c274cb54238b.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="892" height="429" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/data-src-image-6cb288f1-9592-427b-a9df-c274cb54238b.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-6cb288f1-9592-427b-a9df-c274cb54238b.png 892w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 10. Once the</em></i> <i><em class="italic" style="white-space: pre-wrap;">vtable</em></i> <i><em class="italic" style="white-space: pre-wrap;">type is applied, the</em></i> <i><em class="italic" style="white-space: pre-wrap;">Qakbot</em></i> <i><em class="italic" style="white-space: pre-wrap;">sample resolves to a named</em></i> <i><em class="italic" style="white-space: pre-wrap;">IWbemLocatorVtbl.ConnectServer</em></i> <i><em class="italic" style="white-space: pre-wrap;">call, making the WMI connection logic explicit.&#xA0;</em></i></figcaption></figure><p>&#xA0;Several plugins and scripts can accelerate this process. IDA includes a default COM Helper plugin, and Airbus CERT&#x2019;s <a href="https://github.com/airbus-cert/comida" rel="noreferrer noopener"><u>COMIDA</u></a> and Frank Boldewin&#x2019;s&#xA0;<a href="https://github.com/fboldewin/COM-Code-Helper" rel="noreferrer noopener"><u>COM Code Helper</u></a>&#xA0;scripts are also useful options. Binary Ninja users can apply similar&#xA0;type&#xA0;reconstruction workflows to make&#xA0;interface pointers and&#xA0;vtable&#xA0;calls easier to read. Recent Binary Ninja releases include&#xA0;<a href="https://binary.ninja/2024/02/12/enhancing-com-reverse-engineering.html" rel="noreferrer noopener"><u>COMpanion-related data rendering support</u></a>.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-91916a52-0580-4916-8344-3940416e43b7.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="560" height="378"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 11. Binary Ninja view of COM-related types and</em></i> <i><em class="italic" style="white-space: pre-wrap;">vtable</em></i> <i><em class="italic" style="white-space: pre-wrap;">usage.&#xA0;</em></i></figcaption></figure><p>&#xA0;For&#xA0;dynamic analysis, tracing can help by&#xA0;observing&#xA0;COM activation and dispatch calls at runtime.&#xA0;<a href="https://blog.talosintelligence.com/transparent-com-instrumentation-for-malware-analysis/" rel="noreferrer noopener"><u>DispatchLogger</u></a>, written by Talos&#x2019;&#xA0;David Zimmer, is one example of a DLL that can be injected into a process to proxy and log COM-related calls, including <a href="https://learn.microsoft.com/en-us/windows/win32/api/oaidl/nn-oaidl-idispatch" rel="noreferrer noopener"><u>IDispatch</u></a> usage. Researchers can hook or place breakpoints on COM-related calls to&#xA0;identify&#xA0;which interface is being instantiated. For IDA Pro users, the&#xA0;file&#xA0;&#x201C;<a href="https://hex-rays.com/blog/igors-tip-of-the-week-93-com-reverse-engineering-and-com-helper" rel="noreferrer noopener"><u>&lt;IDAROOT&gt;\cfg\clsid.cfg</u></a>&#x201C;&#xA0;can be used as a reference to map a GUID.&#xA0;OleView.NET can also be run inside the analysis environment to help with the mapping. Dynamic binary instrumentation frameworks such as&#xA0;<a href="https://dynamorio.org/" rel="noreferrer noopener"><u>DynamoRIO</u></a>&#xA0;can also be used for runtime tracing of COM behaviors.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-3bb937fb-2af7-4d3a-ab41-ab1ab7ee3ff2.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="560" height="404"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 12.</em></i> <i><em class="italic" style="white-space: pre-wrap;">DispatchLogger</em></i> <i><em class="italic" style="white-space: pre-wrap;">can</em></i> <i><em class="italic" style="white-space: pre-wrap;">assist</em></i> <i><em class="italic" style="white-space: pre-wrap;">dynamic analysis by logging Win32 API and COM-related activity</em></i> <i><em class="italic" style="white-space: pre-wrap;">of a</em></i> <i><em class="italic" style="white-space: pre-wrap;">target process.&#xA0;</em></i></figcaption></figure><h2 id="how-threat-actors-use-com-and-dcom">How threat actors use COM and DCOM&#xA0;</h2><p>Malicious actors use COM&#xA0;as&#xA0;it provides convenient access to existing Windows functionality&#xA0;and can make static analysis efforts more difficult&#xA0;with the functionality of the sample hidden behind indirect&#xA0;register-based&#xA0;function&#xA0;calls.</p><p>The following&#xA0;COM classes and interfaces&#xA0;are useful when triaging samples and building hunting logic.</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/windows-threats4.jpg" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="2000" height="978" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/windows-threats4.jpg 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1000/2026/06/windows-threats4.jpg 1000w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w1600/2026/06/windows-threats4.jpg 1600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w2400/2026/06/windows-threats4.jpg 2400w" sizes="(min-width: 720px) 720px"></figure><p><strong>Hunting</strong>&#xA0;<strong>for</strong>&#xA0;<strong>COM interfaces&#xA0;</strong></p><p>Static hunting for COM usage&#xA0;starts with&#xA0;known ProgIDs or&#xA0;GUIDs&#xA0;targeted in a hunt. Some binaries&#xA0;contain&#xA0;ProgID strings such as&#xA0;<code>WScript.Shell</code>,&#xA0;<code>Shell.Application</code>, MSXML2.XMLHTTP or WinHttp.WinHttpRequest.5.1. Others&#xA0;contain&#xA0;binary GUIDs without helpful strings. For hunting, we need to be careful about the on-disk byte order for GUIDs&#xA0;because&#xA0;the first three fields are usually stored little-endian in memory and in binaries.&#xA0;</p><p>For the Task Scheduler CLSID&#xA0;<code>{0F87369F-A4E5-4CFC-BD3E-73E6154572DD}</code>, the corresponding byte pattern is:&#xA0;</p>
<!--kg-card-begin: html-->
<pre>9F 36 87 0F E5 A4 FC 4C BD 3E 73 E6 15 45 72 DD&#xA0;</pre>
<!--kg-card-end: html-->
<p>For the&#xA0;<code>ITaskService</code>&#xA0;IID&#xA0;<code>{2FABA4C7-4DA9-4013-9697-20CC3FD40F85}</code>, the byte pattern is:</p>
<!--kg-card-begin: html-->
<pre>C7 A4 AB 2F A9 4D 13 40 96 97 20 CC 3F D4 0F 85</pre>
<!--kg-card-end: html-->
<p>&#xA0;A simplified YARA hunting rule for binaries that reference the Task Scheduler COM class and interface might look like:&#xA0;</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-fa009e42-fe1f-4a21-a9dd-6dfbc850ffe1.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="936" height="672" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/data-src-image-fa009e42-fe1f-4a21-a9dd-6dfbc850ffe1.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-fa009e42-fe1f-4a21-a9dd-6dfbc850ffe1.png 936w" sizes="(min-width: 720px) 720px"></figure><p>&#xA0;This kind of rule will also find legitimate software, so it typically needs to be tightened with&#xA0;detection&#xA0;names, submission dates, file types, family&#xA0;names,&#xA0;and other context to narrow the output.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-e6c3e7ea-0120-48d6-ad9e-53cbdccc67cf.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="936" height="681" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/data-src-image-e6c3e7ea-0120-48d6-ad9e-53cbdccc67cf.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-e6c3e7ea-0120-48d6-ad9e-53cbdccc67cf.png 936w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 13. Hunting for COM interfaces with YARA can pivot on GUIDs,</em></i> <i><em class="italic" style="white-space: pre-wrap;">activation</em></i> <i><em class="italic" style="white-space: pre-wrap;">APIs,</em></i> <i><em class="italic" style="white-space: pre-wrap;">and</em></i> <i><em class="italic" style="white-space: pre-wrap;">additional</em></i> <i><em class="italic" style="white-space: pre-wrap;">context such as import tables and prevalence.&#xA0;</em></i></figcaption></figure><h2 id="notable-malware-families-and-com">Notable malware families and COM&#xA0;</h2><p>Although there are many malware families&#xA0;utilizing&#xA0;COM, the&#xA0;following case studies&#xA0;demonstrate&#xA0;only a few&#xA0;notable malware families&#xA0;and their interaction with&#xA0;COM interfaces.&#xA0;</p><h3 id="case-study-1-gh0stratsimpleremoter-and-task-scheduler">Case study&#xA0;1: Gh0stRAT/SimpleRemoter&#xA0;and Task Scheduler&#xA0;</h3><p><a href="https://attack.mitre.org/software/S0032/" rel="noreferrer noopener"><u>Gh0stRAT</u></a>&#xA0;is a long-lived remote access trojan&#xA0;(RAT)&#xA0;whose source code has been publicly available for years, which has made it a convenient base for modified RAT families and actor-specific forks. MITRE ATT&amp;CK describes&#xA0;Gh0stRAT as a remote access tool with public source code that has been used by multiple groups.&#xA0;&#xA0;</p><p>The COM-relevant part of this example is the scheduled task creation logic in&#xA0;the RAT. The code uses Task Scheduler COM interfaces rather than simply invoking schtasks.exe. In process creation telemetry, the task creation may not appear as a direct schtasks.exe launch&#xA0;visible in EDR telemetry as&#xA0;COM calls run inside the malware process.&#xA0;&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-3a189d76-08a7-45e8-9a5b-dfced478c4d8.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="560" height="194"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 14. Gh0stRAT/SimpleRemoter</em></i> <i><em class="italic" style="white-space: pre-wrap;">code creating a scheduled task through Task Scheduler COM interfaces.</em></i></figcaption></figure><h3 id="case-study-2-attor-and-bits">Case study&#xA0;2:&#xA0;Attor&#xA0;and BITS&#xA0;</h3><p>Attor&#xA0;is a Windows-based cyberespionage platform&#xA0;<a href="https://www.welivesecurity.com/2019/10/10/eset-discovers-attor-spy-platform/" rel="noreferrer noopener">first publicly documented by ESET</a>&#xA0;in 2019, with observed activity dating back to at least 2013. It is a modular implant built around a dispatcher&#xA0;component&#xA0;that manages loadable plugins, allowing operators to tailor functionality per victim. Reported capabilities include screen capture, audio recording, keylogging, clipboard capture, file collection and upload, process/window monitoring, persistence, Tor-based C2&#xA0;communications,&#xA0;and GSM/GPRS device fingerprinting through AT commands.&#xA0;</p><p>Background Intelligent Transfer Service (BITS) is another COM-exposed Windows service that attackers use,&#xA0;as&#xA0;it provides reliable file transfer functionality&#xA0;and an alternative service for C2 communications that may evade the scrutiny of EDR software.&#xA0;&#xA0;</p><p>The&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/bits/nn-bits-ibackgroundcopyjob" rel="noreferrer noopener"><u>IBackgroundCopyJob</u></a>&#xA0;interface is used to add files to a job, set priority,&#xA0;determine&#xA0;state, and start or stop transfers. Malware using this interface may perform payload download,&#xA0;staging,&#xA0;or exfiltration through the same background transfer service used by legitimate applications.&#xA0;</p><p>In the example used here, the&#xA0;Attor&#xA0;plugin&#xA0;uses&#xA0;<code>IBackgroundCopyJob</code>&#xA0;to communicate with a C2 server. The same plugin also contains COM exposed functionality for launching&#xA0;VBScript and PowerShell through COM client code, and&#xA0;through&#xA0;use of&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/wbemcli/nn-wbemcli-iwbemclassobject" rel="noreferrer noopener"><u>IWbemClassObject</u></a>&#xA0;to enumerate installed endpoint security software.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-862580ee-aab1-4e61-8dc6-a961b1583a54.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="936" height="675" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/data-src-image-862580ee-aab1-4e61-8dc6-a961b1583a54.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-862580ee-aab1-4e61-8dc6-a961b1583a54.png 936w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 15.</em></i> <i><em class="italic" style="white-space: pre-wrap;">Attor-related flow showing BITS use through</em></i> <i><em class="italic" style="white-space: pre-wrap;">IBackgroundCopyJob</em></i> <i><em class="italic" style="white-space: pre-wrap;">as part of a larger infection and data movement chain.&#xA0;</em></i></figcaption></figure><h3 id="case-study-3-warmcookie-and-task-scheduler">Case study 3:&#xA0;WarmCookie&#xA0;and Task Scheduler&#xA0;</h3><p><a href="https://blog.talosintelligence.com/warmcookie-analysis/" rel="noreferrer noopener"><u>WarmCookie</u></a>, also known as&#xA0;BadSpace, is a malware family that Talos reported as&#xA0;emerging&#xA0;in April 2024 and being distributed through&#xA0;malspam&#xA0;and malvertising.&#xA0;</p><p>The COM-specific part of the workflow is visible in the decompiled function responsible for persistence.&#xA0;WarmCookie&#xA0;initializes COM, creates the older Task Scheduler 1.0 object using&#xA0;<code>CLSID_CTaskScheduler</code>,&#xA0;and requests&#xA0;<code>IID_ITaskScheduler</code>. It then creates a work item, configures&#xA0;flags&#xA0;and creates a trigger. In the screenshot below, the class and interface identifiers appear before the follow-on task and trigger creation calls.&#xA0;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-5f6b2e0b-45b8-45cf-b216-18c25aafcd50.png" class="kg-image" alt="Introduction to COM usage by Windows threats" loading="lazy" width="921" height="687" srcset="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/size/w600/2026/06/data-src-image-5f6b2e0b-45b8-45cf-b216-18c25aafcd50.png 600w, https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/data-src-image-5f6b2e0b-45b8-45cf-b216-18c25aafcd50.png 921w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">Figure 16.</em></i> <i><em class="italic" style="white-space: pre-wrap;">WarmCookie</em></i> <i><em class="italic" style="white-space: pre-wrap;">Task Scheduler COM persistence routine showing COM initialization,</em></i> <i><em class="italic" style="white-space: pre-wrap;">CoCreateInstance</em></i> <i><em class="italic" style="white-space: pre-wrap;">with the older Task Scheduler 1.0</em></i> <i><em class="italic" style="white-space: pre-wrap;">CLSID_CTaskScheduler,</em></i> <i><em class="italic" style="white-space: pre-wrap;">and</em></i> <i><em class="italic" style="white-space: pre-wrap;">IID_ITaskScheduler</em></i> <i><em class="italic" style="white-space: pre-wrap;">values, and follow-on task and trigger creation.&#xA0;</em></i></figcaption></figure><h2 id="conclusion">Conclusion&#xA0;&#xA0;</h2><p>COM is&#xA0;an integral part of the Windows programming model. As such,&#xA0;it&#xA0;will remain&#xA0;useful to malware authors&#xA0;wishing to&#xA0;utilize&#xA0;existing cross-platform functionality in Windows. COM is often used to&#xA0;hide&#xA0;malicious functionality&#xA0;behind the&#xA0;vtable&#xA0;based&#xA0;indirect function calls&#xA0;but equally for achieving persistence or moving laterally within victim environments.&#xA0;&#xA0;</p><p>For threat researchers, the important skill is recognizing when a sample is using COM and then translating the evidence like ProgIDs, CLSIDs, IIDs,&#xA0;and&#xA0;vtable&#xA0;offsets&#xA0;into the&#xA0;human-readable name of&#xA0;the&#xA0;Windows&#xA0;component, interface,&#xA0;and method&#xA0;that are&#xA0;being&#xA0;used.&#xA0;</p><p>Analysts&#xA0;in most malware cases&#xA0;do not need to&#xA0;fully master&#xA0;COM&#xA0;to analyze COM-based binary malware. They need enough practical knowledge to&#xA0;identify&#xA0;the client-side workflow, recover interface&#xA0;types,&#xA0;and understand whether the malware is using COM for task creation, WMI access, BITS transfers, shell automation, Office automation, local execution, remote&#xA0;activation,&#xA0;or persistence.&#xA0;</p><p>Tools such as OleView.NET,&#xA0;ComView, IDA&#x2019;s COM Helper, COMIDA, COM Code Helper, COMpanion plugin, and&#xA0;DispatchLogger can shorten the path from an anonymous indirect call to a meaningful API-level action.&#xA0;</p><h2 id="further-reading-and-tools">Further reading and tools&#xA0;</h2><ul><li>Microsoft Learn:&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/com/component-object-model--com--portal" rel="noreferrer noopener"><u>Component Object Model (COM)</u></a>&#xA0;and&#xA0;<a href="https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dcom/4a893f3d-bd29-48cd-9f43-d9777a4415b0" rel="noreferrer noopener"><u>DCOM Remote Protocol</u></a>&#xA0;overview&#xA0;</li><li>Microsoft Learn:&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/com/com-technical-overview" rel="noreferrer noopener"><u>COM technical overview</u></a>&#xA0;and&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/com/com-clients-and-servers" rel="noreferrer noopener"><u>COM clients and servers</u></a>&#xA0;</li><li>Microsoft Learn:&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/combaseapi/nf-combaseapi-cocreateinstance" rel="noreferrer noopener"><u>CoCreateInstance</u></a>,&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/combaseapi/nf-combaseapi-cocreateinstanceex" rel="noreferrer noopener"><u>CoCreateInstanceEx</u></a>,&#xA0;and&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/combaseapi/nf-combaseapi-clsidfromprogid" rel="noreferrer noopener"><u>CLSIDFromProgID</u></a>&#xA0;</li><li>Microsoft Learn:&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/unknwn/nn-unknwn-iunknown" rel="noreferrer noopener"><u>IUnknown</u></a>,&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/oaidl/nn-oaidl-idispatch" rel="noreferrer noopener"><u>IDispatch</u></a>,&#xA0;and COM&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/com/implementing-reference-counting" rel="noreferrer noopener"><u>reference counting</u></a>&#xA0;</li><li>Microsoft Learn: COM security with&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/combaseapi/nf-combaseapi-coinitializesecurity" rel="noreferrer noopener"><u>CoInitializeSecurity</u></a>,&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/combaseapi/nf-combaseapi-cosetproxyblanket" rel="noreferrer noopener"><u>CoSetProxyBlanket</u></a>,&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/com/launchpermission" rel="noreferrer noopener"><u>LaunchPermission</u></a>,&#xA0;and&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/com/accesspermission" rel="noreferrer noopener"><u>AccessPermission</u></a>&#xA0;</li><li>Microsoft Learn: Task Scheduler&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/taskschd/nn-taskschd-itaskservice" rel="noreferrer noopener"><u>ITaskService</u></a>, legacy&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/mstask/nn-mstask-itaskscheduler" rel="noreferrer noopener"><u>ITaskScheduler</u></a>,&#xA0;and BITS&#xA0;<a href="https://learn.microsoft.com/en-us/windows/win32/api/bits/nn-bits-ibackgroundcopyjob" rel="noreferrer noopener"><u>IBackgroundCopyJob</u></a>&#xA0;</li><li>Google Project Zero:&#xA0;<a href="https://projectzero.google/2024/12/windows-tooling-updates-oleviewnet.html" rel="noreferrer noopener"><u>OleView.NET</u></a>&#xA0;tooling updates&#xA0;</li><li>James Forshaw: DCOM Research for Everyone!&#xA0;</li><li>James Forshaw:&#xA0;<a href="https://youtu.be/dfMuzAZRGm4?si=y5SiIIDW1l6oMDmX" rel="noreferrer noopener">COM in Sixty Seconds! (well minutes more likely)</a>&#xA0;</li><li>Mandiant/Google Cloud:&#xA0;<a href="https://cloud.google.com/blog/topics/threat-intelligence/hunting-com-objects/" rel="noreferrer noopener">Hunting COM Objects</a>&#xA0;</li><li>Mandiant/Google Cloud:&#xA0;<a href="https://cloud.google.com/blog/topics/threat-intelligence/hunting-com-objects-part-two" rel="noreferrer noopener">Hunting COM Objects, Part Two</a>&#xA0;&#xA0;</li><li>Hex-Rays:&#xA0;<a href="https://hex-rays.com/blog/igors-tip-of-the-week-93-com-reverse-engineering-and-com-helper" rel="noreferrer noopener">COM reverse engineering and COM Helper</a>&#xA0;&#xA0;</li><li>Malwarebytes Labs:&#xA0;<a href="https://www.malwarebytes.com/blog/news/2014/02/observing-com-within-malicious-code" rel="noreferrer noopener">Observing COM within Malicious Code</a>&#xA0;&#xA0;</li><li>Tools:&#xA0;<a href="https://github.com/fboldewin/COM-Code-Helper" rel="noreferrer noopener"><u>COM Code Helper</u></a>,&#xA0;<a href="https://blog.talosintelligence.com/transparent-com-instrumentation-for-malware-analysis/" rel="noreferrer noopener"><u>DispatchLogger</u></a>,&#xA0;<a href="https://github.com/airbus-cert/comida" rel="noreferrer noopener"><u>COMIDA</u></a>,&#xA0;<a href="https://web.archive.org/web/20251029175716/https:/www.japheth.de/Download/COMView.zip" rel="noreferrer noopener">ComView</a>&#xA0;</li></ul>]]></content:encoded></item><item><title><![CDATA[Close Encounters of the Human Kind]]></title><description><![CDATA[In the latest Threat Source, Hazel channels her inner Spielberg to explore why humans are delightfully irrational, reminding us that while security best practices are simple in theory, they’re a lot harder to pull off when you’re busy dealing with real life.]]></description><link>https://blog.talosintelligence.com/close-encounters-of-the-human-kind/</link><guid isPermaLink="false">6a32e2390f7b200001a40137</guid><category><![CDATA[Threat Source newsletter]]></category><dc:creator><![CDATA[Hazel Burton]]></dc:creator><pubDate>Thu, 18 Jun 2026 18:00:24 GMT</pubDate><media:content url="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/threat_source-2.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://storage.ghost.io/c/af/a0/afa04ee3-414f-4481-8d23-7e7c146f192e/content/images/2026/06/threat_source-2.jpg" alt="Close Encounters of the Human Kind"><p>Welcome to this week&#x2019;s Threat Source newsletter.&#xA0;</p><p>I love a Spielberg summer. His ability to imbue a sense of wonder, awe, curiosity,&#xA0;and connection means&#xA0;he&#x2019;s&#xA0;in a league of his own. Granted, I&#xA0;haven&#x2019;t&#xA0;felt that from him in a while, but when he hits? Oof. I feel like I need somebody to reach across and take off my sunglasses.&#xA0;</p><p>So,&#xA0;<em>Disclosure Day</em>&#xA0;then. A group of friends and I visited a thankfully packed-out cinema at the weekend to bear witness to Spielberg&#x2019;s latest dalliance with extra-terrestrial beings.&#xA0;</p><p>Thar be no spoilers here, but I do want to touch on one of the film&#x2019;s central themes: the idea that a group of people (let&#x2019;s call them &#x201C;the government&#x201D;)&#xA0;believes&#xA0;they can predict how humanity will react to world-changing information based on historical data patterns.&#xA0;</p><p>We often assume that information influences behaviour. Surely, if people have the right information,&#xA0;they&apos;ll&#xA0;make the right decision? If people understand the risk,&#xA0;they&apos;ll&#xA0;act.&#xA0;</p><p>However, the older I get, the less convinced I am that human&#xA0;beings&#xA0;are rational creatures.&#xA0;</p><p>Organisations know they should patch. People know they should use MFA. Leaders know they should practice an incident before it happens for real.&#xA0;</p><p>And yet.&#xA0;</p><p>Life is messy. Life, uh, finds a way.&#xA0;</p><p>Most people&#xA0;aren&apos;t&#xA0;making decisions in a vacuum. They&#xA0;need&#xA0;to contend with limited budgets, workloads, competing business priorities,&#xA0;and a hundred other things demanding their attention. &quot;Knowing&quot; what they should do is the easy part. The hard part is finding the time, resources, urgency,&#xA0;and collective will to&#xA0;actually do&#xA0;it.&#xA0;</p><p>As one of my colleagues&#xA0;<a href="https://blogs.cisco.com/security/security-in-the-post-mythos-era" rel="noreferrer noopener"><u>recently wrote</u></a>, even in a post-Mythos world, many of the controls most likely to protect organisations are the same ones&#xA0;we&apos;ve&#xA0;been talking about for years. Segmentation. Backups. MFA everywhere. Understanding if your controls are doing what&#xA0;they&#x2019;re&#xA0;supposed to be doing.&#xA0;&#xA0;</p><p>And people can react to the exact same situation in&#xA0;very different&#xA0;ways.&#xA0;</p><p>Take the film itself. One of my friends remarked on the way out, &quot;What a load of twaddle.&quot; (Do you use &quot;twaddle&quot; much in the U.S.? If not,&#xA0;I recommend&#xA0;introducing&#xA0;it into&#xA0;more sentences.) Another&#xA0;friend&#xA0;thought&#xA0;it was entertaining,&#xA0;exciting,&#xA0;and thought-provoking.&#xA0;</p><p>As Colin Firth&#x2019;s character finds out in Disclosure Day, humans&#xA0;don&#x2019;t&#xA0;always&#xA0;react the way you expect them to.&#xA0;I think&#xA0;that&#x2019;s&#xA0;so important&#xA0;to acknowledge and work&#xA0;with, rather than against,&#xA0;in&#xA0;the&#xA0;cybersecurity&#xA0;field.&#xA0;Information is only one piece of the puzzle. Experience, priorities, personality, context,&#xA0;and a hundred other factors shape how people interpret and respond&#xA0;to that information.&#xA0;</p><p>So, this message&#xA0;probably&#xA0;won&#x2019;t&#xA0;land&#xA0;with 99% of you. But&#xA0;for the 1%&#xA0;that it might, go ahead and&#xA0;do that MFA install&#xA0;you&#x2019;ve&#xA0;been putting off.&#xA0;&#xA0;</p><p>Also,&#xA0;you&#x2019;re&#xA0;running low on milk. Best pick some up on your way home.</p><h2 id="the-one-big-thing">The one&#xA0;big thing&#xA0;</h2><p>Cisco Talos&#xA0;<a href="https://blog.talosintelligence.com/scripting-the-disassembler" rel="noreferrer noopener"><u>detailed a new approach</u></a>&#xA0;to reverse engineering that pairs local AI agents with traditional analysis tools like the VB6 disassembler&#xA0;vbdec. Instead of awkwardly bolting AI onto the software,&#xA0;vbdec&#xA0;exposes its parsed data through a live Component Object Model (COM) interface. Analysts can simply use natural language prompts to automate complex tasks like decompiling functions or building call graphs. This transforms the disassembler from a static viewer into a highly interactive,&#xA0;queryable&#xA0;data server.&#xA0;</p><h3 id="why-do-i-care">Why do I care?&#xA0;</h3><p>This&#xA0;methodology&#xA0;empowers analysts to generate custom workflows on the fly, completely bypassing the wait for new vendor features. It also solves a massive privacy hurdle: because the AI agent and disassembler share a local machine, sensitive binaries never leave your workstation. This architectural shift proves that any analysis tool holding structured data behind a GUI can become a powerhouse for agentic automation, saving defenders countless hours of tedious reverse engineering.&#xA0;</p><h3 id="so-now-what">So now what?&#xA0;</h3><p>Tool developers should start exposing their application data through external scripting interfaces like COM or other inter-process communication (IPC) protocols. If you are analyzing VB6 binaries, enable remote scripting in&#xA0;vbdec&#xA0;and&#xA0;point&#xA0;your preferred local AI agent at the provided operator briefing to start automating your tasks. Security teams need to lean into this&#xA0;paradigm shift, letting agents handle the exhaustive, repeatable grunt work while analysts focus on the actual analysis.&#xA0;<a href="https://blog.talosintelligence.com/scripting-the-disassembler" rel="noreferrer noopener"><u>Read the blog for more</u></a><a href="https://blog.talosintelligence.com/scripting-the-disassembler" rel="noreferrer noopener"><u>.</u></a></p><h2 id="top-security-headlines-of-the-week">Top security headlines of the week&#xA0;</h2><p><strong>ShinyHunters</strong>&#xA0;<strong>claims Council of Europe hack</strong>&#xA0;<br>On Sunday,&#xA0;ShinyHunters&#xA0;added the Council of Europe to its Tor-based leak site, threatening to release more than 297GB of data allegedly stolen from the organization&#x2019;s network. (<a href="https://www.securityweek.com/shinyhunters-claims-council-of-europe-hack/" rel="noreferrer noopener"><u>SecurityWeek</u></a>)&#xA0;</p><p><strong>Sweeping credential-harvesting heist compromises +30K Fortinet devices</strong>&#xA0;<br>A large-scale cyber espionage and credential-harvesting operation is actively targeting&#xA0;Fortinet firewalls&#xA0;and VPN&#xA0;gateways, and&#xA0;has already compromised more than 30,000 Internet-facing devices across&#xA0;nearly 200 countries. (<a href="https://www.darkreading.com/cyberattacks-data-breaches/sweeping-credential-harvesting-heist-compromises-30k-fortinet-devices" rel="noreferrer"><u>Dark Reading</u></a>)&#xA0;</p><p><strong>Fileless Phantom Stealer targets browser credentials</strong>&#xA0;<br>In addition to executing entirely in memory, the&#xA0;malware&apos;s&#xA0;infection chain incorporates other anti-analysis techniques designed to evade detection. (<a href="https://www.darkreading.com/cyberattacks-data-breaches/fileless-phantom-stealer-targets-browser-credentials" rel="noreferrer noopener"><u>Dark Reading</u></a>)&#xA0;</p><p><strong>Bug in FIFA World Cup internal system gave anyone ability to modify TV stream</strong>&#xA0;<br>A security researcher said she was able to access several internal FIFA platforms due to a simple security flaw, which allowed her to watch and have full control of the TV stream of every World Cup game.&#xA0;(<a href="https://techcrunch.com/2026/06/16/bug-in-fifa-world-cup-internal-system-gave-anyone-ability-to-modify-tv-stream/" rel="noreferrer noopener"><u>TechCrunch</u></a>)&#xA0;</p><p><strong>The FBI built its own replica small town to simulate real-world cyber attacks</strong>&#xA0;<br>Dubbed&#xA0;the Kinetic Cyber Range, the FBI&#x2019;s small purpose-built town opened in February 2025 and features fully furnished houses, a hotel, a gas station and grocery mart, a courthouse, a hospital, roads, traffic lights, and a power company designed to mimic a real U.S. community. (<a href="https://techcrunch.com/2026/06/13/the-fbi-built-its-own-replica-small-town-to-simulate-real-world-cyberattacks/" rel="noreferrer noopener"><u>TechCrunch</u></a>)</p><h2 id="can%E2%80%99t-get-enough-talos">Can&#x2019;t&#xA0;get enough Talos?&#xA0;</h2><p><a href="https://www.buzzsprout.com/2018149/episodes/19360999" rel="noreferrer noopener"><strong><u>Patching</u></strong>&#xA0;<strong><u>in the dark: Managing unknown threats in complex environments</u></strong></a>&#xA0;<br>If&#xA0;you&apos;re&#xA0;tired of being&#xA0;told to&#xA0;&quot;just patch,&quot; we understand.&#xA0;In this episode of Talos Takes, Amy and Pierre explore the logistical, technical, and business realities that make patching a complex, high-stakes operation rather than a simple button click. Here are the things defenders often miss that build true resilience in organizations.&#xA0;</p><p><a href="https://blog.talosintelligence.com/hypotheses-telemetry-and-human-judgment-inside-cisco-talos-threat-hunting/" rel="noreferrer noopener"><strong><u>Hypotheses, telemetry, and human judgment: Inside Cisco Talos Threat Hunting</u></strong></a>&#xA0;<br>Learn how Cisco Talos Threat Hunting uses hypothesis-driven methods and multi-domain telemetry correlation to find stealthy threats&#xA0;operating&#xA0;below automated detection thresholds.&#xA0;</p><p><a href="https://blog.talosintelligence.com/winning-the-cyber-marathon-with-tony-giandomenico" rel="noreferrer noopener"><strong><u>Winning the cyber marathon with Tony Giandomenico</u></strong></a>&#xA0;<br>In the high-speed world of cybersecurity, the difference between a breach and a breakthrough often comes down to endurance. Tony Giandomenico, Senior Director of Product Management with Cisco Talos, joins Amy to discuss Talos Threat Hunting, the challenges of leading major product launches, and the grueling discipline of Ironman triathlons.</p><h2 id="upcoming-events-where-you-can-find-talos">Upcoming events where you can find Talos&#xA0;</h2><ul><li><a href="https://blackhat.com/us-26/" rel="noreferrer noopener"><u>Black Hat USA</u></a>&#xA0;(Aug. 1&#xA0;&#x2013;&#xA0;6) Las Vegas, NV&#xA0;</li><li><a href="https://defcon.org/html/defcon-34/dc-34-index.html" rel="noreferrer noopener"><u>DEF CON</u>&#xA0;<u>34</u></a>&#xA0;(Aug. 6&#xA0;&#x2013;&#xA0;9) Las Vegas, NV&#xA0;</li></ul><h2 id="most-prevalent-malware-files-from-talos-telemetry-over-the-past-week">Most prevalent malware files from Talos telemetry over the past week&#xA0;</h2><p><strong>SHA256: 9f1f11a708d393e0a4109ae189bc64f1f3e312653dcf317a2bd406f18ffcc507</strong>&#xA0;&#xA0;<br>MD5: 2915b3f8b703eb744fc54c81f4a9c67f&#xA0;&#xA0;<br>Talos Rep:&#xA0;<a href="https://talosintelligence.com/talos_file_reputation?s=9f1f11a708d393e0a4109ae189bc64f1f3e312653dcf317a2bd406f18ffcc507" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=9f1f11a708d393e0a4109ae189bc64f1f3e312653dcf317a2bd406f18ffcc507</u></a>&#xA0;&#xA0;<br>Example Filename:&#xA0;VID001.exe&#xA0;&#xA0;<br>Detection Name:&#xA0;Win.Worm.Coinminer::1201**&#xA0;</p><p><strong>SHA256: c0ad494457dcd9e964378760fb6aca86a23622045bca851d8f3ab49ec33978fe</strong>&#xA0;<br>MD5: bf9672ec85283fdf002d83662f0b08b7&#xA0;&#xA0;<br>Talos Rep:&#xA0;<a href="https://talosintelligence.com/talos_file_reputation?s=c0ad494457dcd9e964378760fb6aca86a23622045bca851d8f3ab49ec33978fe" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=c0ad494457dcd9e964378760fb6aca86a23622045bca851d8f3ab49ec33978fe</u></a>&#xA0;<br>Example Filename:&#xA0;f_000cd7.html&#xA0;<br>Detection Name: W32.C0AD494457-95.SBX.TG&#xA0;</p><p><strong>SHA256: 9896a6fcb9bb5ac1ec5297b4a65be3f647589adf7c37b45f3f7466decd6a4a7f</strong>&#xA0;<br>MD5: 38de5b216c33833af710e88f7f64fc98&#xA0;&#xA0;<br>Talos Rep:&#xA0;<a href="https://talosintelligence.com/talos_file_reputation?s=9896a6fcb9bb5ac1ec5297b4a65be3f647589adf7c37b45f3f7466decd6a4a7f" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=9896a6fcb9bb5ac1ec5297b4a65be3f647589adf7c37b45f3f7466decd6a4a7f</u></a>&#xA0;<br>Example Filename:&#xA0;SECOH-QAD.exe&#xA0;&#xA0;<br>Detection Name:&#xA0;Win.Tool.Procpatcher::1201&#xA0;</p><p><strong>SHA256: e60ab99da105ee27ee09ea64ed8eb46d8edc92ee37f039dbc3e2bb9f587a33ba</strong>&#xA0;&#xA0;<br>MD5: dbd8dbecaa80795c135137d69921fdba&#xA0;&#xA0;<br>Talos Rep:&#xA0;<a href="https://talosintelligence.com/talos_file_reputation?s=e60ab99da105ee27ee09ea64ed8eb46d8edc92ee37f039dbc3e2bb9f587a33ba" rel="noreferrer noopener"><u>https://talosintelligence.com/talos_file_reputation?s=e60ab99da105ee27ee09ea64ed8eb46d8edc92ee37f039dbc3e2bb9f587a33ba</u></a><br>Example Filename: u992574.dll&#xA0;&#xA0;<br>Detection Name:&#xA0;W32.Variant:MalwareXgenMisc.29d4.1201</p>]]></content:encoded></item></channel></rss>