Since February 2026, we have been tracking an invoice-themed malware campaign targeting Italian users and organizations. The messages are written in Italian and abuse a familiar business pretext: a short invoice notification that asks the recipient to open an attached HTML document. The lure is minimal, credible enough for a busy inbox, and designed to move the victim from email to browser to script execution.
One of the analyzed emails used the subject Nostra fattura nr. 91B. The body asked the recipient to review the attached document to view invoice details. The attachment was named Fattura_00121.html.

The attached HTML file is intentionally small. It redirects the browser to a phishing page hosted at https://pillarsesolution[.]com/i#..., where the URL fragment contains the recipient’s email address encoded in Base64. This identifier is likely used by the threat actor to track victims and store, in a dropzone, the email addresses of users who reached the phishing page and proceeded to download the malicious ZIP package.
The landing page presents a polished download interface in Italian. It tells the user that the document is ready, displays Fattura_00121.pdf, marks it as protected, and invites the user to click Scarica File. This visual layer is important: the malware does not rely only on attachment execution, but on making the transition from email to download feel routine.

When the victim clicks the download button, the page reaches https://bonanza.davidsabido[.]com/wp-includes/images/ic/i.php. The server-side logic appears to gate delivery by user agent. Windows browser user agents receive a ZIP archive, while non-Windows or unsuitable clients are redirected to a generic PDF hosted on Google Drive. This split helps the campaign look less suspicious during casual inspection and avoids delivering the Windows payload to environments unlikely to execute it.
In the last analyzed case, the ZIP archive was B00225511855210021-00551.zip and contained a heavily obfuscated JavaScript file named B00225511855210021-00551.js. Opening the JavaScript starts the real infection chain through Windows Script Host. The script builds and launches a PowerShell command with execution policy bypass, then drops and executes additional PowerShell stages under C:\Users\Public.
The first decoded PowerShell stage checks connectivity against www.google.com, flushes DNS cache, disables or weakens Windows Defender settings, and looks for analysis tools. The anti-analysis process list includes names such as handle, autorunsc, Dbgview, tcpvcon, any.run, sandbox, tcpview, OLLYDBG, ImmunityDebugger, Wireshark, apateDNS, and analyze. If the environment looks suspicious, execution may stop or the host may be restarted.
After these checks, the malware downloads 03.txt from a meusitehostgator[.]com[.]br domain. The downloaded data is parsed after a %x% marker and reconstructed as a .NET loader, ClassLibrary3, which is loaded directly in memory via PowerShell reflection. This behavior matches public reporting on UpCrypter campaigns: JavaScript and PowerShell act as staging layers, while an MSIL loader prepares and deploys the final payload.

The final PowerShell stage, sgyof.ps1, was recovered from Joe Sandbox. It is a UTF-16LE PowerShell file containing a large byte array. That byte array loads a .NET assembly in memory through [System.Reflection.Assembly]::Load(...) and invokes ClassLibrary1.Class1.Run(...). The embedded assembly contains RunPE functionality and a nested .NET executable.
Extracting the nested executable revealed the final payload. It is a .NET GUI executable internally identified as MasonClient.exe. Its strings include MasonRAT, MasonGroup, NeptuneRAT V5.3, and the C2 configuration afxwd[.]ddns[.]net:143. This indicates that UpCrypter is the delivery and loading framework, while the malware deployed in this case is NeptuneRAT, also labelled MasonRAT by its own configuration.
The sandbox behavior supports this conclusion. Joe Sandbox captured sgyof.ps1 as a dropped file and detected NeptuneRAT in PowerShell memory dumps and unpacked PE artifacts. Other sandboxes stopped earlier in the chain, likely because the loader checks for analysis environments and specifically includes sandbox-related process names. This explains why some environments observed only gdwfw.txt, tpkws.txt, or np.txt, while Joe Sandbox progressed far enough to recover the final PowerShell stage.
For defenders, the user-facing lesson is simple: an HTML attachment that immediately redirects to a document download page should be treated as hostile, especially when the email uses generic invoice language and high-priority headers. For analysts, the important point is that the campaign is not a single malware family from the first stage onward. It is a layered delivery chain where UpCrypter stages and executes a final RAT payload.
| Type | Indicator |
|---|---|
| Redirect landing page | https://pillarsesolution[.]com/i#<base64-email> |
| Download handler | https://bonanza.davidsabido |
| ZIP payload | https://bonanza.davidsabido |
| Decoy PDF | https://drive.google.com/file/d/1XASle6sijkTrXEX_Elyk0C_R5uP33Oe-/view |
| Stage host | andrefelipedonascime1778799406970.2241107.meusitehostgator |
| Stage URL | https://andrefelipedonascime1778799406970.2241107.meusitehostgator |
| Secondary payload URL | https://viveturetiro |
| C2 | afxwd |
| File | SHA-256 |
|---|---|
R Nostra fattura nr. 91B.eml | 1d4b0079863f439199fa58f83ff85d229685f652042eb2f0181008c0cc38b3cb |
Fattura_00121.html | c3114ff7d4837dd11334ef841f5861e834efea948c56c72d1f64c1e93a5fa2fa |
B00225511855210021-00551.zip | 5437ccfa4cd32dff8908884a8ca328e6b7b8fd4b41ad78344668c60baed7c556 |
B00225511855210021-00551.js | bd56e7dd350b63c5492ebac88bcb8f2a9a45c0c0050f52f786dcae948eab9145 |
01.txt | 2f2b5290c5339b94d80342172590f17300150870ea9416ab6661e1cb38c9ac0d |
03.txt / gdwfw.txt | fa894470086ee4fb5ee581b398b0828f22e9397aa840a2f79dd2945e867220b3 |
np.txt | 3d9b98e3aa9b467d08d5f21648d629228766af21fe396b99c3fb326581eba0f3 |
ybftw_01.ps1 | 3b6c29bdec7980e3b8d9c4f4e676e1775f512c11d7ab6816d1ae27600d547993 |
sgyof.ps1 | 774663b9d66b6c310c78e98140fbda1a738181be3ab7722f4ab94430cc54c2b8 |
Extracted ClassLibrary1 RunPE DLL | 7438de9978d21abe51d13229a225caab6b3990494a27b888b02cfe365cc47181 |
Extracted MasonClient.exe / NeptuneRAT payload | 545eacb0c871d22484c2e3d55dc8ae0951f4a48c2b5abba7063081ffcbd20b81 |
| Type | Indicator |
|---|---|
| Temporary path | C:\Users\Public\gdwfw.txt |
| Temporary path | C:\Users\Public\tpkws.txt |
| Temporary path | C:\Users\Public\tzhgg.ps1 |
| Temporary path | C:\Users\Public\ybftw_01.ps1 |
| Persistence path | C:\Users\<user>\Windows Update\AppData\LocalLow\LocalLow Windows\Program Rules\Program Rules NVIDEO\Program Rules\Program Rules NVIDEO\sgyof.ps1 |
| Registry persistence | HKCU\Software\Microsoft\Windows\CurrentVersion\Run |
| Registry value observed | Drivers Update-752 |
| LOLBin abused | C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe |