Executive Summary
SolarisLoader - a new malware loader | Spamhaus' Cyber Threat Intelligence Unit (CTI FU) identified this new malware loader, named as SolarisLoader, used by an unknown threat actor that is using this previously undocumented and undetected loader to actively deploy additional loaders/stealers.
Naming rationale | We are tracking this new malware family as Solaris, based on the internal project name recovered from a Program Database (PDB) path found within its watchdog component.
Defense evasion | Solaris is not obfuscated but instead relies on Safetica Windows Driver to disable Windows Services as well as to kill Endpoint Detection and Response (EDR) processes to avoid detection and increase infection rates.
Advanced stealth tactic | The loader patches Window's internal Antimalware Scan Interface (AMSI) and Event Tracing for Windows (ETW) via direct opcode modification, blinding Windows telemetry before persistence is established.
A resilient three-layer persistence mechanism | Solaris combines scheduled task registration, registry-based self-backup, and a watchdog process that automatically re-initiates the implant to ensure it keeps running after a victim restarts their computer.
Active development cycle | This malware stealer has matured significantly with 10 distinct versions, confirming active operational evolution by the threat actor.
Introduction
In May 2026, the CTI FU identified a new malware family in the wild that we track as SolarisLoader distributed by various crack tools. Solaris has been observed delivering a variety of other infamous stealers and loaders, including StealC, XTinyloader and Amadey.
While Solaris is mainly used as a loader, early versions had clipping capabilities, targeting cryptocurrency coins.
During our analysis (as of June 2026), we have encountered two types of fake installers containing SolarisLoader:
Installers containing the malicious Solaris executable in an unencrypted form, dropping it to disk and executing it immediately.
Installers that have the malicious executables in its Resource section, encrypted with the same single XOR byte constant or with a hardcoded RC4 key, decrypting them, dropping to disk and then executing them.
Distribution Chain
Fake Installer Campaigns
Unencrypted Solaris Executable
The analyzed fake installers contain multiple malware families embedded within the executable. These payloads are extracted to disk under randomly generated filenames and subsequently executed via CreateProcess or ShellExecute.
The installer's final stage consists of writing and executing the legitimate cracked software that is being impersonated. This is likely to reduce the user's suspicion after the malware deployment has completed.
It is worth noting that this behavior was not present in all observed samples. Earlier variants deployed only the malicious payloads and did not drop the advertised software. The addition of the impersonated application in later samples suggests an effort by the malware operators to improve the perceived legitimacy of the installer and reduce the likelihood of users noticing the compromise.
Encrypted Solaris Executable
With this version the payloads are stored within the Portable Executable (PE) resource section and are extracted using one of the two following methods:
1. Resources with IDs such as 1, 2, and subsequent entries are encrypted using a single-byte XOR key. After decryption, the files are written to disk and executed via ShellExecuteW.
2. Resources with IDs such as 100, 101, and subsequent entries are encrypted using RC4. The RC4 key is hardcoded within the binary. Following decryption, the payloads are written to disk and executed via ShellExecuteW.
Distribution Through Other Loaders
In addition to the fake installer campaigns described above, Solaris has also been observed being distributed by other known malware loaders, including XTinyLoader and Amadey.
Infection chain
Solaris is not directly embedded within the analyzed fake installers. Instead, it is delivered through an intermediate loader that executes prior to the Solaris payload. This loader appears to be based on an open-source project [1], as evidenced both by the embedded PDB path [2] and by the functionality exposed by the loader itself.
Loaders
SH-Loader-1 | Anatomy
The loader bridges the gap between the fake installer and the malicious payload delivery. Before spawning any payloads, it performs two key preparatory steps:
Firstly, it spoofs its own process image path to explorer.exe by directly manipulating the ProcessParameters fields in the Process Environment Block (PEB) via NtQueryInformationProcess, while also walking the PEB loader module list to patch the corresponding entry there. This enables the process to appear as a legitimate explorer.exe file to tools that obtain process information from user mode rather than from kernel sources
Secondly, it bypasses User Account Control (UAC) silently, without triggering a prompt by abusing the COM Elevation Moniker interface Elevation:Administrator!new:{3E5FC7F9-9A51-4367-9063-A120244FBEC7} (ICMLuaUtil), allowing child processes to be spawned with elevated privileges transparently and without issue.
Early variants launched two elevated components: SvcHostAnalyzer.exe, an EDR-disabling utility discussed in the following section, and WinUpdateHelper.exe, the Solaris implant. Later variants abandoned the additional EDR-disabling stage altogether, simplifying the execution chain and proceeding directly to Solaris execution after privilege elevation. The filenames used throughout the chain are intended to blend in with legitimate Windows components.
Defense Evasion
The defense evasion component, dropped by the loader as SvcHostAnalyzer.exe, bears a strong resemblance to the publicly available WinDefenderKiller project by S12cybersecurity, as evidenced by the embedded PDB path C:\Users\vboxuser\Desktop\BypassUAC-master\WinDefenderKiller-main\CombinedWindowsDefKiller\x64\Release\CombinedWindowsDefKiller.pdb.
The name CombinedWindowsDefKiller is telling, and the codebase is visibly assembled from multiple public scripts stitched together, with the same operations applied redundantly across different functions.
A recurring typo - CurrentControlSet\\Servies'\ instead of Services\\ - appears consistently across multiple registry-manipulation functions. Since the actual driver service registration uses the correct path (otherwise the driver would never load), this typo causes several Defender service-disabling functions to silently fail at runtime - RegOpenKeyExW returns an error and execution continues unimpeded. The kernel-level process termination via the driver IOCTL is doing the real heavy lifting for evasion; the intended registry manipulation are largely rendered ineffective by the actor's coding errors.
Driver Loading (CVE-2026-0828)
Before any malicious payload is dropped, the installer deploys a defense evasion component that abuses CVE-2026-0828, a vulnerability in the Safetica endpoint protection driver (STProcessMonitorDriver).
The vulnerable driver is embedded directly in the dropper binary and extracted to %TEMP%\EmbeddedDriverService.sys at runtime, after which it is registered as a kernel service and loaded via NtLoadDriver following privilege escalation to SeLoadDriverPrivilege. The dropper attempts to unload and clean up any previously installed instance before re-registering the driver, suggesting it was designed to handle repeated execution cleanly.
Windows Defender Dismantling
With kernel-level access established, the dropper proceeds to systematically dismantle Windows Defender through a combination of service key deletion, policy-based registry disabling, and process termination. The service registry trees for all major Defender components are either deleted outright or have their Start value set to 4 (disabled):
WinDefendSense(Microsoft Defender for Endpoint)WdNisSvcWdFilterWdBootWdNisDrvSecurityHealthServiceMdCoreSvc
Tamper Protection is disabled via SOFTWARE\Microsoft\Windows Defender\Features\TamperProtection = 0, and an extensive set of Group Policy registry values under SOFTWARE\Policies\Microsoft\Windows Defender disables real-time monitoring, behavior monitoring, on-access protection, IOAV protection, and cloud-based sample submission. Windows Security Center (wscsvc) is also disabled, eliminating any visible security alerts from the system tray. Running Defender processes are then forcibly terminated via the vulnerable driver's IOCTL 0xB822200C, with the kill loop running for approximately three minutes and targeting:
MsMpEng.exeNisSrv.exeMsSense.exeSenseIR.exeMpCmdRun.exeMpSigStub.exeSecurityHealthService.exeSecurityHealthSystray.exe
Third-Party AV Termination
Beyond Windows Defender, the dropper explicitly targets two additional security products: 360 Total Security and Rising Antivirus (RAV) - both dominant in Chinese-speaking markets and ReasonLabs RAV Endpoint Protection. For 360 Total Security, seven processes are targeted for termination:
360sd.exe360rp.exe360tray.exe360safebox.exezhudongfangyu.exe360entclient.exeQHActiveCheck.exe
Rising AV is targeted through process termination, and the processes targeted for termination are:
Ravbg64.exe*ravmond.exeravcp.exeravwinsrv.exe
*Ravbg64.exe appears to have been incorrectly grouped with the other Rising AV processes, as it is unlikely to be related and may have been included in error by the author.
ReasonLabs RAV services are disabled via registry manipulation:
RAVAVServiceRAVNetFilterRAVFileFilterRSANAVRSWINSVC
RAV's Realtime monitoring and updates are additionally disabled via: SOFTWARE\Policies\RAVEndpointProtection.
Avast and AVG processes are also included in the termination list:
AvastSvc.exeAvastUI.exeafwServ.exeavgsvc.exeavgui.exeaswIdsAgent.exe
The explicit targeting of 360 Total Security and Rising AV is a strong indicator that the campaign actively targets Chinese-speaking users.
Network Isolation
As a final layer of defense evasion, the dropper appends a hardcoded blocklist of over 55 domains to %WINDIR%\System32\drivers\etc\hosts, redirecting them all to 0.0.0.0.
The blocked domains cover Microsoft Defender for Endpoint telemetry and gateway endpoints (winatp-gw-*), Windows Update infrastructure, certificate revocation endpoints (crl.microsoft.com, pkiops.microsoft.com), and Azure AD authentication. The list also includes a significant number of US Government cloud endpoints (*.usgovcloudapi.net, *.wd.microsoft.us, login.microsoftonline.us) - which in the context of the broader campaign profile, likely reflects the list being sourced from a publicly available EDR bypass resource rather than deliberate government sector targeting.
A deduplication check is performed before writing - if winatp-gw-usmt.microsoft.com is already present in the hosts file, the write is skipped. Additionally, %TEMP%, %APPDATA%, and %LOCALAPPDATA% are added to Windows Defender's exclusion list via SOFTWARE\Microsoft\Windows Defender\Exclusions\Paths, directly covering the directories used by Solaris for its own persistence and execution.
Technical Analysis
Here is the CTI FU's technical overview of Solaris with version 1.8.2
String Obfuscation & WinAPI Resolution
Across the Solaris samples we have encountered, strings are encrypted and decrypted at runtime with XOR using a single byte constant, varying per sample.
Before resolving the Windows API, it performs a straightforward ntdll unhooking technique by loading a clean copy of ntdll.dll directly from disk, mapping it into memory, and overwriting the in-memory .text section of the already-loaded (potentially hooked) ntdll with the pristine bytes from disk.
Solaris then employs the same XOR pattern to resolve Windows API at runtime, decrypting the targeted Windows API strings and finding the address from the relevant loaded Windows DLL.
Anti-Analysis
As mentioned above, Solaris is using a vulnerable Windows Driver to disable Windows Defender and various EDR applications. Beyond this, during its execution, it locates AmsiScanBuffer and EtwEventWrite via direct opcode modification, writing `B857000780C3`[3] and `C3` respectively.
Persistence
Registry Copy
During execution, Solaris stores a registry-backed copy of itself under HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced. It reads its own executable from disk, verifies the MZ PE header, and XOR-encodes the entire file with a single byte XOR constant before writing it into the ICtrlData registry value as binary data. The original executable path is also stored in the ICtrlPath value.

Scheduled Task
The malware copies itself to %APPDATA%\\Microsoft\\Windows\\Services\\winhost.exe, a path chosen to resemble legitimate Windows components. Before installation, it removes any existing copy, or renames the old file to winhost.exe.old if deletion fails. After copying itself, it deletes the Zone.Identifier alternate data stream. Finally, it timestamps the new file using timestamps from cmd.exe and sets the file attributes to hidden and system, helping it blend in with legitimate Windows files.
Solaris' next step is to check whether the current process is running with elevated administrator privileges under UAC by checking the process token. If the token is elevated, then it creates a scheduled task with the name Windows Security Checks, otherwise it uses the name Windows Update Assistant.
Via the Task Scheduler COM API, Solaris creates a Windows Scheduled Task, deleting any existing task with the same name, creating a new task definition, and configuring it to run under the interactive user token with a normal/non-elevated run level. The task is set to start when available, ignore battery-related restrictions, run without an execution time limit, and use a below-normal priority.
Persistence Monitoring
Solaris also spawns a dedicated persistence monitor thread that periodically verifies the integrity of its registry foothold. Every fixed interval, it checks whether the ICtrlData value under HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced is still present - and if not, re-establishes the registry-backed copy of itself. To avoid interfering with self-update operations, the thread checks a global flag before each iteration; if a self-update is detected, it gracefully exits.
Logon Script Fallback
If scheduled task creation fails regardless of elevation level, Solaris falls back to setting the UserInitMprLogonScript value under HKCU\Environment, pointing it to a command that invokes cmd.exe /c start /b "" "<path>" - launching the malware silently in the background on every user logon, requiring no elevated privileges and leaving no scheduled task artefact.
Process Watchdog
Watchdog Initialization
Solaris has an embedded secondary binary - a dedicated watchdog component - stored RC4-encrypted within its data section and decrypted at runtime using a hardcoded key. This component is responsible for maintaining Solaris's presence within the infected host by injecting into legitimate running processes.
After decrypting the watchdog payload, Solaris enumerates running processes and targets a list of ten commonly present and legitimate ones:
explorer.exe,taskhostw.exe,SearchProtocolHost.exe,sihost.exe,RuntimeBroker.exe,ctfmon.exe,conhost.exe,smartscreen.exe,Telegram.exe,cmd.exe.
Before injecting into any process candidate, it checks for a named mutex Global\SystemTry_<Process PID> to avoid re-injecting into an already-compromised process.
Injection is performed entirely in memory using a reflective loading technique: the watchdog locates the payload's ReflectiveLoader export, allocates memory in the target process via VirtualAllocEx, writes the payload with WriteProcessMemory, and triggers execution via CreateRemoteThread - leaving no artefacts on disk.

Watchdog Component
Once injected, the watchdog registers its presence by creating a named mutex Global\SystemTry_<PID> tied to the host process, preventing duplicate instances. It then enters an infinite loop, sleeping 10 seconds between iterations, checking for Solaris's own mutex - a Global\<random_hex> string - to determine whether the main implant is still running. If that mutex is absent, the watchdog concludes Solaris has been terminated and initiates recovery: it retrieves the registry-backed copy of Solaris stored in ICtrlData, reverses the XOR encoding, verifies the MZ PE header, drops it under a randomly-named executable in %TEMP%, and spawns it as a hidden process via CreateProcessW - completing the self-healing persistence loop.

Crypto Clipper
Versions 1.5.0 through to 1.6.8 of Solaris deployed a clipboard hijacker as a dedicated thread, targeting cryptocurrency wallet addresses across multiple networks. This functionality was removed starting with version 1.6.9.
Before entering the polling loop, it loads the attacker-controlled replacement wallets by reading the ICtrlCLP registry value under HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced - the same value populated via CMD 5. The value is XOR-decoded using a single-byte key and parsed as a comma-delimited list of wallet addresses.
If the registry value is absent or unreadable, the hijacker falls back to a set of hardcoded wallet addresses embedded in the binary, allowing the clipper to remain functional even without a C2-issued update. This design also enables the operator to rotate wallet addresses remotely via CMD 5 without redeploying the implant.
The hijacker then enters a polling loop, checking at a fixed interval to detect clipboard changes without registering a clipboard listener. When a change is detected, it inspects the clipboard contents against a set of prefix and length heuristics to identify wallet addresses across the following networks:
Ethereum: prefix
0x, 42 charactersTRON: prefix
T, 34 charactersLitecoin: prefix
ltc1(43 characters), orL/M(34 characters)Bitcoin SegWit: prefix
bc1, 42 or 62 charactersBitcoin Legacy: prefix
1or3, 26--35 characters
If a match is found and the address differs from the attacker's substitution wallet, the clipboard contents are silently replaced via EmptyClipboard and SetClipboardData, redirecting any outgoing cryptocurrency transaction to an attacker-controlled wallet without the victim's knowledge.
Network communication
Solaris embeds multiple botnet C2 addresses directly in its configuration. Early versions carry two hardcoded botnet C2 endpoints, while later samples increase this to three. However, C2 emulation confirms that only one endpoint actively responds to the Solaris protocol - the remaining addresses belong to infrastructure associated with other malware families, including StealC and Amadey, as corroborated by sandbox detonations and internal telemetry. Whether these represent deliberate misdirection or shared infrastructure reuse by the same actor remains unclear. If anyone has visibility into this, we'd welcome any insight to help determine which it is.
After establishing persistence and deploying the watchdog, Solaris spawns three threads: a persistence monitor that is responsible for maintaining the registry-backed copy as described above, and two threads dedicated to C2 communication: a beacon and a task poller. Both of these threads identify the infected host using a Unique Identifier (UID) derived by FNV-hashing the DigitalProductId and InstallDate registry values separately, formatting the result as a %08X%08X hex string, and both target the same endpoint on the remote server.
In both cases, outgoing requests are XOR-encrypted with a single-byte constant, while server responses are XOR-decrypted using the same constant before processing.
As mentioned, the first thread acts as a beacon, periodically registering the host by performing a POST request with the body containing a system fingerprint including the UID, username, computer name, OS version, total RAM, and administrator status at a fixed interval.
The second thread acts as a task poller, querying the C2 at a shorter fixed interval for pending commands by performing a POST request with the body set to the string task:<uid>, and dispatching any non-empty response to the command handler. Upon completing a command, the handler reports the outcome back to the C2 via a POST request with the body taskid=%u&uid=%s&status=%d&reason=%s, where status is a binary success/failure flag and reason carries a command-specific result string - such as Success: <path>, Success: In-Memory (PID: %d), Err_File_Write_Denied, or Err_Execution_Blocked.
Beacon Request
Solaris's beacon request fingerprints the infected host by POSTing the body uid=%s&user=%s&pc=%s&os=%s&ver=%s&ram=%u&adm=%d, populated as follows:
uid: workstation UID as described above
user: username retrieved via
GetUserNameWpc: computer name retrieved via
GetComputerNameWos: OS version obtained via
RtlGetVersion, mapped internally to human-readable strings (e.g.Windows 11,Windows Server 2019)ver: implant version, decrypted at runtime
ram: total physical memory in MB, derived from
GlobalMemoryStatusExadm: boolean administrator flag obtained via
GetTokenInformationwithTokenElevation
Notably, the server's response to the beacon is decrypted but otherwise discarded, suggesting the beacon serves purely as a registration/check-in mechanism with no tasking role.
Task Poller
The task poller POSTs task:<uid> to a url and expects a pipe-delimited response in the format command_id|task_id|data, where the third field is either a URL pointing to a payload to be downloaded or raw data to be processed directly, depending on the command. Where a command involves a payload, it is downloaded from the C2-supplied URL using the same User-Agent as all other requests.
A full breakdown of supported commands and their behavior is provided in the table below for the latest version 1.8.2.
| Command ID | Description | Action |
|---|---|---|
| 1 | EXE drop & run | Downloads the payload, writes it to a randomly-named .exe in %TEMP% with the hidden attribute set, and executes it via ShellExecuteW. Reports Success: <path>, Err_File_Write_Denied, or Err_Execution_Blocked back to the C2.. |
| 2 | Self-update | Downloads a new implant, stores a registry-backed copy of it under HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced XOR-encoding it before writing it into the ICtrlData registry value, renames the current executable to .old, and exits via ExitProcess(0). |
| 3 | In-memory execution | Downloads a PE, validates the MZ header, spawns a suspended notepad.exe instance, and hollows it using NtCreateSection/NtMapViewOfSection. Reports Success: In-Memory (PID: <pid>) on success. |
| 4 | C2 domain update | Downloads payload data, XOR-encodes it with a single byte XOR constant, and stores it under HKCU\Software\Microsoft\Windows NT\CurrentVersion using the workstation UID as the value name, or falling back to Seed |
| 6 | DLL load | Downloads the payload, writes it to a randomly-named .dll in %TEMP%, and loads it via LoadLibraryW. |
| 7 | EXE drop & run (validated) | Downloads the payload, XOR-decodes it with a single byte key, validates the MZ header, and if valid writes it to a randomly-named .exe in %TEMP% and executes it via ShellExecuteW. Reports Err_Invalid_PE_Header to the C2 if the MZ check fails. |
While commands 1, 2, 3, 6, and 7 use the third field as a URL, from which the payload is downloaded, command 4 treats it differently: the field carries the C2 configuration data directly, which is XOR-encoded and written straight to the registry without a download step.
Across versions, the command set evolved considerably as detailed below:
1.2.0 implements five commands (1--5). Command 3 performs self-hollowing - spawning a suspended copy of the malware's own process and injecting a downloaded PE into it. The self-update (cmd 2) is rudimentary, lacking the
.oldrename and registry persistence seen in later versions. The C2 update (cmd 4) XORs with a single byte key and uses a hardcodedSeedvalue name with no UID fallback.1.5.0 expands to seven commands, introducing the clipboard hijacker (cmd 5), which XOR-encodes wallet substitution data with single byte key and stores it in
ICtrlCLPunderHKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced. Command 3 becomes a stub as it ACKs back to the C2 but performs no action, suggesting the self-hollowing was dropped between 1.2.0 and 1.5.0.1.6.8 retains the seven-command structure. The self-update gains
.oldrenaming and registry-backed persistence.1.6.9 drops the clipboard hijacker entirely, reducing the active command set to five. Whether the clipper functionality was removed or migrated to a standalone module loaded via cmd 6 remains unconfirmed.
1.8.1 reintroduces command 3, now implemented as section-mapped hollowing into a suspended
notepad.exeinstance viaNtCreateSection/NtMapViewOfSection- a significant upgrade over the crude self-hollowing of 1.2.0
Versioning & Evolution
Solaris shows clear signs of active development, with at least 10 distinct versions identified in our dataset spanning from 1.2.0 to 1.8.2, alongside two named variants tentatively placed between 1.6.7 and 1.6.8.
Version 1.2.0 establishes the core implant: a five-command protocol delivering execution, self-update, process hollowing, C2 configuration update, and DLL loading capabilities over POST /post.php with a generic Windows 10 User-Agent. By version 1.5.0 the command set had grown to seven, adding a clipboard hijacker component and a more robust payload execution path with MZ header validation.
The intervening versions reflect iterative refinement rather than architectural overhaul as beaconing endpoints shifted from /post.php to /debug.php and eventually /api.php, a second and later third C2 were introduced, and the User-Agent was updated to a full Chrome 120 string. The pace and nature of these changes suggest an actor actively maintaining and operationally deploying the implant rather than episodic development.
| SHA256 | Version | Compilation Timestamp | Beacon Url | Task Polling Url | User-Agent |
|---|---|---|---|---|---|
| b5574f8f533af6789ecaf9a164aee99dd1bc506b0fcd3a71aa26dfaeef6d1df8 | 1.2.0 | Wed Apr 22 00:45:28 2026 UTC | /post.php | /post.php | Mozilla/5.0 (Windows NT 10.0; Win64; x64) |
| 89c763bf31f1bd2e9e78007843b56fa2be59e49988f5fbcd64411688ea6efb3a | 1.3.0 | Wed Apr 22 05:11:00 2026 UTC | /post.php | /post.php | Mozilla/5.0 (Windows NT 10.0; Win64; x64) |
| a38926b27a00b97bb98971cf4c8a538fcc7a4b9bc85cc6f77f4a0abc036b66aa | 1.4.0 | Thu Apr 23 22:15:52 2026 | /post.php | /post.php | Mozilla/5.0 (Windows NT 10.0; Win64; x64) |
| ce4a166e8758540f6622bb9b2e5339bbd2496b15fb2692ac1d3f8bad3673404a | 1.5.0 | Sun Apr 26 01:48:01 2026 | /debug.php | /debug.php | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 |
| a450d3dc99c634e7bd3b5e7e7c2a91a40348d68453f00c5c854540c5fb3ec2ad | 1.6.7 | Wed Apr 29 04:31:27 2026 | /api.php | /api.php | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 |
| ea2a8b5a083e1841199fca70a542cb50da5156ce0f0cc7a9ac250626100e8069 | 1.6.8 | Sun May 03 06:13:14 2026 | /api.php | /api.php | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 |
| 51e9b1e1eccdc862908895897e6aa329b433645fdc5d2c644509958547ce3dac | 1.6.9 | Sun May 10 14:06:18 2026 | /api.php | /api.php | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 |
| 0b1954a4479d66d3a49de26b07bec8b4966aa9bb47d0e23815ab4560cf7614aa | 1.7.0 | Sat May 16 13:25:51 2026 | /api.php | /api.php | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 |
| 8cf4ae00be0fe987cc14ae74b0b64c188083b8bbe3b7397239cefd594492c6cd | 1.8.1 | Wed May 20 12:47:52 2026 | /api.php | /api.php | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 |
| c2ef45750d754850b8f6d448899409379489c5c4380bcf83c4ab6f61c9e01215 | 1.8.2 | Thu May 28 10:36:11 2026 | /api.php | /api.php | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 |
| SHA256 | Version | Compilation Timestamp | Beacon Url | Task Polling Url | User Agent |
|---|---|---|---|---|---|
| 60c814c50e67dc7f3955480940eefcca439218e841ab28dce2348e5791709ca0 | Discord | Thu May 07 14:56:40 2026 | /api.php | /api.php | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 |
| cb8acaaedf18382cce2a12e7ae725a8497d6e5058fa7df29b022c45c0893e3c6 | PIRATE | Mon Jun 01 14:39:08 2026 | /api.php | /api.php | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 |
IOC
SolarisLoader IOCs (botnet C2 servers):
https://threatfox.abuse.ch/browse/tag/SolarisLoader/
SolarisLoader malware samples:
https://bazaar.abuse.ch/browse/tag/SolarisLoader/
SolarisLoader configs are available:
https://github.com/spamhaus/CTI/tree/main/solarisloader
| SHA256 | Yara Rule | Description |
|---|---|---|
| 1188d1f47cfc3797e1eb004e531b11b7a191a21475d97226dfa607db380b650b | Tool_FakeInstaller | Detects installers that drop and execute unencrypted payloads with the capability to launch also the impersonated cracked software as a decoy. |
| dad8e703aa0e0077992d417f2825b9fd7b3c54058f76212547ffb0da2e072e02 | Tool_FakeInstaller | Detects installers that drop and execute unencrypted payloads with the capability to launch also the impersonated cracked software as a decoy. |
| 69e82da57188417c62f945e4d4747954ee3e75edfc82e7da9c28f67cef18430a | Tool_FakeInstaller_1 | Detects fake installers that extract single-byte XOR--encrypted payloads from PE resources with IDs 1, 2. |
| 33166e17fdb736cdfbe304002b081db17069618d5110e30b3a01d9086d5e1273 | Tool_FakeInstaller_1 | Detects fake installers that extract single-byte XOR--encrypted payloads from PE resources with IDs 1, 2. |
| 8fe1fed51558e70a559f372b3e27b43ff70d6375b0161a8efa966b2188937721 | Tool_FakeInstaller_2 | Detects fake installers that decrypt RC4-encrypted payloads stored in PE resources with IDs 100, 101. |
| f56297a4158c79b49c9079ba634ea9595461717fb0955affe308ea05633ec9f1 | Tool_FakeInstaller_2 | Detects fake installers that decrypt RC4-encrypted payloads stored in PE resources with IDs 100, 101. |
| 4b0f0759f4e63c162e541f9930997ade428e3ec56b7dd2b5a7a4cec22e6661c4 | Loader_SH_1 | Detects SH-1 Loader utilised to drop Solaris. |
| e39f6d67c3d9688ce65744e096c67db8f3ac16d6fe343cb161189ffa0a2e659c | Loader_SH_1 | Detects SH-1 Loader utilised to drop Solaris. |
| 5847e5335818953dfb13c349a7f1b530c5a75a0ff671b471b5e6d8f9b55b23e8 | Tool_CombinedWindowsDefKiller | An EDR/AV process/services killer component utilizing code from WinDefenderKiller open-source project. |
| 5847e5335818953dfb13c349a7f1b530c5a75a0ff671b471b5e6d8f9b55b23e8 | Driver_Safetica | Detects Safetica kernel driver. |
Interested in shaping the next generation of CTI tooling?
Nik discovered Solaris. He's pretty awesome (he didn't tell us to write that, honestly). He's also, by his own admission, pretty frustrated with the tools available to do this kind of work.
"The tools we have are either too limited to run at the scale we require, or they give us results so noisy it's hard to find what we need - there's very little out there that closes the loop from a YARA match to something you could actually act on.
We have all the data you'd need for it: spam traps, our own research and additional feeds. Most platforms can identify a match, the harder problem is to understand what it means. Being able to move from a YARA hit to a fully contextualised investigation in a single workflow dramatically shortens that journey."
He and Roman Hüssy (founder of abuse.ch) got tired of waiting for someone else to fix this problem. So, together with the Spamhaus CTI FU, they're building it, and you can be part of this journey.
They're looking for YARA rule authors and researchers undertaking investigations who want to help shape what it becomes. Small group, early stage, real influence on the direction. More here →.