Key takeaways
- APT28 phishing campaign using PixyNetLoader is still ongoing
- PixyNetLoader has been slightly modified since our last blogpost
- Since september, the persistence mechanism has changed
- The observed targetting is still the same
Publishing research on an adversary is always a delicate exercise. You can safely assume that they will read what has been written about them, and that everything made public should be considered burned from that point onward. In early June 2026, we published a blog post analyzing APT28's PixyNetLoader code. Since then, the malware has slightly evolved: the July update breaks the YARA rules and the payload extraction script we provided in our first blogpost, and the September one shifts the persistance mechanism.
While the September changes were probably related to detection issues, the COM registry keys being quite unique, the July update targets key points we provided in our first blogpost (string encryption routines targeted by our yara rule and payload encryption technique) and do not appear to be related to detection issues. This update being released shortly after our initial publication, without being a very robust patch, we estimate that it was issued in order to address our findings.
In this blog post, we examine the modifications introduced by the threat actor, highlighting which changes proved effective and which did not. We will also cover the last September updates, and provide detection guidance.
2026 Post June Campaigns
These campaigns appears to be part of an operational pattern that has remained consistent since 2025, primarily targeting Ukrainian military logistics through malicious XLS and DOC documents.
Document lures displayed to the victim
July updates
Reminder: the PixyNetLoader malware consists in a DLL file, which loads and executes a payload embedded in the PNG companion file, using steganography. Both are dropped by the exploit, which also installs the PixyNetLoader persistance mechanism. In the previous versions, it was registered as a COM handler.
Our first observation on one of these samples (125abe1a497067a61011eb6072b1b3d91d3f0b658ed20a99734f0341d9cbdd6a, dropped in the c:\users\<USER>\appdata\roaming\microsoft\internet explorer\userdata\low\db\uimanager.dll file path) is that every YARA rule we publicly released—or shared with our trusted partners—has now become ineffective. As we anticipated this possibility, we deliberately kept several detection rules private, allowing us to retain detection capabilities despite these modifications.
At first glance, the malware has not been significantly rewritten. A substantial portion of the codebase remains shared with the June 6 version.
As expected, the code responsible for string encryption and has been modified and the password used to derive the AES key is now encrypted.
This modification is quite simple, and we can still identify big similarities with other samples :
The remainder of the execution flow remains essentially unchanged, ultimately loading a CovenantGrunt payload in the C:\Users\<USER>\AppData\Roaming\Microsoft\Network\Cache\icon.png file, that uses the FILEN service as its command-and-control (C2) channel.
September updates
The september strain now uses another persistence mechanism: the dropper will now create the HKCU\Software\Classes\CLSID\{0a556d98-cfee-4d84-82a7-00377f939198} registry key, which will supersede the HKLM handler, which is the Default Associations Profile Handler. This handler is implemented in the legitimate shell32.dll and loaded by explorer.exe. The PixyNetLoader variants will simply export the same functions and forward them to the legitimate shell32.dll. As this handler is only used by explorer.exe, the PixyNetLoader code will check at its startup that the current process is indeed explorer.exe.
Finally, the HIDE magic number is not present anymore, along with other checks.
Otherwise, the most part of the logic remains unchanged : it stills load its .png companion file, extracts the payload using LSB steganography, decrypts then executes it. The payload still being a Covenant Grunt payload using the legitimate FILEN API to communicate.
Detection Guidance
The detection remains relatively straightforward: in addition to the PNG and DLL paths (provided in appendix below), the presence of the HKCU\Software\Classes\CLSID\{0a556d98-cfee-4d84-82a7-00377f939198} registry key is not normal on a sane system. Moreover, even if this registry key existed, its Default value should point to the legitimate shell32.dll.
An earlier sample also used the HKEY_CURRENT_USER\Software\Classes\CLSID\{30d49246-d217-465f-b00b-ac9ddd652eb7}\InProcServer32 as a persistance mechanism (which normally points to the legitimate IDStore.dll system file).
Conclusion
Publishing technical research on a threat actor should always be done with the understanding that every publicly disclosed detection or analysis technique is effectively compromised from that moment onward. Beyond enabling defenders, such publications also give adversaries the opportunity to improve their tooling, evade existing detections, and learn from their previous mistakes.
In this case, however, the modifications introduced by the threat actor were relatively minor and did not appear to significantly disrupt or delay their operational activities.
This also highlights the importance of rapid defender response following the publication of new detection content. Mature threat actors will typically adapt their tooling and tradecraft as quickly as possible to preserve their operational stealth. We have previously observed actors withdrawing from compromised environments as soon as they became aware of an upcoming publication concerning their activities. Although modern EDR solutions with extensive logging capabilities often allow retrospective threat hunting, this is not always sufficient. More discreet threat actors actively work to minimize the forensic artifacts that would enable such investigations.
For this reason, certain portions of our reports are only shared upon request.
Appendix : IOCs
PixyNetLoader DLL file paths
Remark: the PixyNetLoader payload can virtually be installed anywhere on the system. These paths are the ones we identified in the exploits we analyzed.
C:\ProgramData\Microsoft\DeviceSync\DNX\dnxstore.dll
C:\Users\<USER>\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\PSReadLineCore.dll
c:\users\<USER>\appdata\roaming\microsoft\internet explorer\userdata\low\db\uimanager.dll
PixyNetLoader PNG companion file paths
C:\Users\<USER>\AppData\Roaming\Microsoft\Network\Cache\icon.png
C:\ProgramData\Microsoft\DeviceSync\Edge\wallpaper.png
Registry COM handlers used as persistance
Remark: these registry paths should not be set in users' Classes registry keys. However, their Default value should be checked against legitimate ones, in order to avoid false positives.
HKEY_CURRENT_USER\Software\Classes\CLSID\{30d49246-d217-465f-b00b-ac9ddd652eb7}\InProcServer32
HKEY_CURRENT_USER\Software\Classes\CLSID\{0a556d98-cfee-4d84-82a7-00377f939198}
PixyNetLoader SHA256
- PixyNetLoader.20260528 85a796d7c3676b17a2bf158184e4b246b4aa37552be779e4b5d9b6451ed71d2e
- PixyNetLoader.20260603 2fe1af649afea4095153f92e15afa32711104d2f33598b43c78e6085c933920a
- PixyNetLoader.20260611 66b8f030df9b7bd9f50ac3f50385dd634db8159b897abcd99751e21f1495ab8c
- PixyNetLoader.20260720 125abe1a497067a61011eb6072b1b3d91d3f0b658ed20a99734f0341d9cbdd6a
- PixyNetLoader.20260804 2b020bb8e2213317e79ff2c93b3b5d93553bd97d97a53e3373909378cd84ee58
- PixyNetLoader.20260806 62aa54f015bfc608fddfa845f3a7efb9699222298ab0e3253fbc7f046cedba2d
- PixyNetLoader.20260811 70a0e2940e0be141b4d6e2a6989e8baf08279e162a7915354b6874bf297972d3
- PixyNetLoader.20260904 146d511c20d81b81b9bad8470ab88a874f32f23bb3c35594dfbf9fdb6389e60a
- PixyNetLoader.20261013 765a10350827f59d4e6f006fe89faacce2dbe3c839a6af3acc36d4df4b418993