Managed Detection and Response
Operation Repo Ruse
Rift Brigantine's GitHub Lures Deploy Malware
January 15, 2026 | 15 min read
Thomas Elkins and Joshua Green


BlueVoyant Security Operations Center (SOC) and Threat Fusion Cell (TFC) researchers identified an active campaign by the prolific threat actor Rift Brigantine (a.k.a. TA505, FIN11, and Graceful Spider). In this iteration, the actor is leveraging fraudulent GitHub repositories to distribute malicious batch script installers masquerading as legitimate IT and security software, including Microsoft Remote Desktop Connection Manager (RDCMan) and Palo Alto Networks GlobalProtect. These scripts deploy the modular TookPS Downloader, which orchestrates a sophisticated, multi-stage infection chain designed to establish persistent remote access. It accomplishes this through obfuscated PowerShell scripts, SSH reverse tunnels, and sideloaded remote access trojans (RATs). This activity is not a novel intrusion but the TFC’s comprehensive research uncovered it as part of the latest evolution of a long-running, adaptable operation with documented ties to historical Rift Brigantine campaigns.
What Happened?
The attack began when an admin user searched GitHub for installers regarding RDCMan and Palo Alto’s GlobalProtect software. The attacker had set up multiple repositories masquerading as legitimate sources containing installers for the supposed applications.

Figure 1 - GitHub Page hosting fake RDCMan installer
The ZIP archive found in the latest release section of GitHub contained a batch file masquerading as the application installer, accompanied by numerous extension-less junk files added solely to inflate the archive size and create the illusion of legitimacy.
Upon execution, the batch script contains instructions, informing the user that the script needs to be run with admin privileges. While analyzing the file contents, BlueVoyant researchers observed it was constructed with multiple layers of string-splitting and environmental variable manipulation to hide its true purpose.
The script then generates URL (in this case, hxxps://glucogenics[.]com/static_image/), which is used to store the victim computer name and username using curl after the batch script queries the computer name and username using environment variables %COMPUTERNAME% and %USERNAME%.
It then retrieves an encoded payload from another remote path, txtfiles/?enc hosted on the same Command & Control (C2) domain and executes the PowerShell script launched with execution-policy bypass.
Pivoting revealed earlier versions of this malicious script contacted ankaraotogaleri[.]com, while newer variants shifted to glucogenics[.]com. The threat group behind these attacks appears to update its script on a weekly basis, ensuring new domains are used to evade detection.
Ultimately, the batch file serves as a lightweight but highly obfuscated loader, previously identified as the TookPS Downloader. It is designed to fetch and execute attacker-controlled code from a remote server under the guise of a legitimate software installer.

Figure 2 – Batch script contents containing obfuscated curl commands
The remote path txtfiles/?enc contains a PowerShell script designed to generate a unique identifier for the infected machine and then quietly contacts a remote server using that identifier.
The script begins by looking for a file named hwid.dat, first inside the C:\ProgramData folder and, if it’s not found there, it looks inside the user’s AppData folder. This file is used to store the system’s Hardware ID (HWID). If the file is missing altogether or doesn’t contain a proper 32-character value, the script builds a new identifier by combining the computer’s name with its hardware UUID, information retrieved directly from Windows’ system information. It saves this combined value to the hwid.dat file, calculates its MD5 hash, and replaces the file’s contents with this new hashed identifier. This ensures the malware has a consistent, fingerprint-like identifier that uniquely represents that specific victim machine.

Figure 3 – PowerShell script contained at remote server
Once the HWID is confirmed or newly generated, the script contacts the attacker-controlled server at glucogenics[.]com, sending an HTTP request that includes the victim’s unique ID as a parameter. The server’s response is executed immediately in memory using PowerShell’s Invoke-Expression (IEX). This allows the attacker to run arbitrary commands on the victim system without writing any additional files to disk, a technique commonly used to evade antivirus detection.
After establishing this connection, BlueVoyant observed how the remote server delivered six separate PowerShell scripts, each designed to run in sequence. Every script includes its own built-in sleep delay, ensuring that one script fully completes before the next begins.

Figure 4 – PowerShell script contained at remote server
PowerShell Scripts One and Two
Five of the six scripts are constructed similarly, containing a function used to deobfuscate Base64-encoded strings through mathematical operations.
This first two PowerShell scripts are designed to gather information regarding the impacted host including the following:
- Obtain hostname and username, storing in variables CN and UN
- Obtain public IP of compromised host using hxxps://ifconfig[.]me/ip
- Determine the current user session and how the user session was established (i.e. RDP, Console, Network, Service, etc.)
- Query processes looking for the below strings and capture process name and process ID (PID)
- QTConnect
- Msedgeview
- ssh
- sshd
- cloudflared
- ksync
- HDVideo
- lapmon
- ctfmon
- Identify specific folders and files, and recursively identify each file in the folder and obtain their MD5 hash + file name
- C:\ProgramData\hwid.dat
- C:\ProgramData\oko
- C:\ProgramData\oko_ver
- AppData\QTUpdate
- Query GPU and processor using WMI and CIM
- Query processes looking for the below strings and capture process name and process ID (PID)
- Once this information is obtained, the script formats the data into JSON and ships it to a remote server hosted at domain ptk2[.]xyz.
PowerShell Script Three
The third PowerShell script attempts to execute content from a remote server, supplying the value contained within the hwid.dat to the C2 URL using the following format hxxps://ptk2[.]xyz/online/took.php?HWID=<HWID>. The server will then respond with a new script for PowerShell to execute that does not appear to be the same threat each time, rather it is randomized or cycled between different approaches. The goal, however, remains to download additional payloads with the goal of gaining remote access to the compromised machine, like Kaspersky researchers described TookPS.

Figure 5 – Contents of third PowerShell script
As stated, PowerShell script three in the series is meant to deliver payloads and each of the first three scripts always execute. However, even though PowerShell script four, five and six are delivered altogether with the first three, these scripts appear to be conditional or redundant payloads. The latter three scripts are also present among the variety of payloads pushed by script three. Thereby, take note that the fourth, fifth and sixth scripts are delivered among the initial six, but also may be delivered as part of the variety of payloads executed by script three too.
PowerShell Script Four
The fourth PowerShell script payload is designed to download a suspicious zip archive named volume2.zip from URL hxxps://2tnl[.]digital/online/tunupd.php?f=volume2&HWID=<HWID>, placing it within LOCALAPPDATA\Temp. After confirming the download succeeded, the script proceeds to extract the contents, obtaining the MD5 hash of each file contained within the directory.

Figure 6 – Contents of fourth PowerShell script
After the contents are extracted, the PowerShell script proceeds to execute an executable named Volume2.exe. While analysis of Volume2.exe is still ongoing, BlueVoyant researchers determined this binary sideloads another DLL, protobuf.dll, which behaves as a backdoor. The file protobuf.dll contained Base64 encoded data which was later decrypted using AES GCM mode. The decrypted data was a headless PE file which ultimately contacted the C2 domain livewallpapers[.]online.
PowerShell Scripts Five and Six
The final two PowerShell scripts are responsible for downloading and executing a supposed TeamViewer program, renamed as QTConnect.
The fifth PowerShell script begins by creating a folder, QTConnect, within the APPDATA\Roaming folder if it doesn’t exist already. The script then changes into this folder and proceeds to create a hashing table, mapping the following file names with their respective MD5 hashes:
- TeamViewer_Resource_en.dll
- TeamViewer_StaticRes.dll
- TeamViewer.ini
- TeamViewer_Desktop.exe
- TeamViewer.exe (renamed as QTConnect.exe)
- msi.dll (this file does not have an associated MD5 hash, which is discussed later)
Once the files are hashed, the script checks whether the file exists. If it does, it computes the MD5 and compares it to the stored value. If the hash matches, the file is left alone; if it doesn’t match, the file is deleted and marked for re-download. For files that are missing or flagged as bad, the script constructs a per-file download URL by appending the filename to the tunupd.php?f=<filename> path within URL hxxps://ptk2[.]xyz/online/took.php?f= and uses Invoke-WebRequest to pull a fresh copy from the remote server.
As for the msi.dll, the script first writes a large random ASCII blob into a temporary image.png file in the same folder (likely to pad or mask the payload), then streams the downloaded content over that file, reads a FileMD5 HTTP header from the server as the “official” hash, deletes any old msi.dll, renames the image.png file to msi.dll, and remembers the new MD5 value so it can be used as the trusted hash on subsequent runs.
After downloading the required files, the script proceeds to run netstat -ano | Select-String 443, parses the output, and for any connection on port 443 whose owning process name matches QTConnect, it prints a small info object (process name, PID, local/remote address) and then force-kills that process. This ensures there is no current running process of QTConnect.exe.

Figure 7 – Contents of fifth PowerShell Script
Finally, the sixth PowerShell script executes the binary QTConnect.exe, which is the TeamViewer primary binary. The purpose of this execution is to sideload the dynamic link library (DLL) msi.dll, which is MineBridge RAT (a.k.a. TeviRAT in Kaspersky’s report).
Initial analysis indicates the MineBridge RAT (msi.dll) was compiled with an obfuscation tool that uses a technique called control flow flattening. This method restructures the program’s execution flow into a more complex and less readable form, making reverse engineering significantly more difficult.
The malware first collects system details from the affected host using Windows API calls such as GetComputerNameW (computer name), GetUserNameW (logged-in user), and GetProductInfo (Windows edition). This information is structured in JSON format. It then reads the HWID.dat file to retrieve the hardware identifier, which is added to the JSON data. Next, the combined data is Base64-encoded. After encoding, MineBridge RAT decrypts an embedded RC4 key using XOR, then uses that key to RC4-encrypt the Base64 data. Finally, the encrypted data is transmitted to a hardcoded C2 server.
If communication with the C2 server succeeds and the C2 determines that the HWID is unique, it responds with an RC4 encrypted payload. Once decrypted, BlueVoyant researchers determined it was another PowerShell script, designed to inject a DLL into the already running process and execute another PowerShell script designed to install SSH onto the system.
Example of Other Payloads
Among the variety of payloads delivered by script three, BlueVoyant analyzed one PowerShell script that led to a Node.js backdoor. First, the script determines if the Windows installation is 32-bit or 64-bit, then downloads the portable Node.js application from the official website and unpacks the content within the user’s newly created directory, APPDATA\TEMP\nodejs-portable.

Figure 8 – Download of JS RAT and Portable Node
After extracting the contents within the Node.js zip archive, the script proceeds to download a JS file named mcl.js from URL hxxps://2tnl[.]digital/online/tunupd.php?f=mcll&HWID=<insert HWID>, storing within the APPDATA\TEMP directory. Once the JS file is downloaded, the script then proceeds to execute node.exe, supplying the path for mcl.js as the argument. BlueVoyant researchers determined mcl.js functions as a covert backdoor client that connects a compromised system to a remote C2 server over an encrypted channel.

Figure 9 – Contents of Node.js RAT
When the backdoor is executed, it generates a unique encryption key for the session and reads a previously created hardware identifier (HWID) from the victim machine to uniquely identify the infected system. It then establishes a persistent outbound connection to a hardcoded remote server and waits for encrypted instructions.
The server can issue different types of commands, including requesting system identification details, creating hidden network tunnels that forward local connections through the attacker’s server, and instructing the client to establish new C2 connections. BlueVoyant researchers observed that each command was classified as an “id”:

All communications are encrypted using AES-256 to prevent inspection by security tools. If the connection is dropped, the script automatically attempts to reconnect every few seconds, ensuring long-term persistence.
Rift Brigantine’s Long-Haul Campaign
This attack activity is a definitive iteration of a long-running, adaptable campaign by the financially motivated threat actor Rift Brigantine. Central to the actor's operational consistency is a sophisticated, multi-stage infection chain capable of several remote access approaches. At least two methods—the establishment of a reverse SSH tunnel and the deployment of MineBridge RAT—stand out as an unbroken signature across the entire known timeline of their activity. This technique was documented in detail by Zscaler in June, 2021 and a 2018 Proofpoint report showing an even earlier iteration. In that 2021 report, the malicious installer executed PowerShell scripts that downloaded ssh.exe, configuration files, and RSA keys to set up a persistent, scheduled reverse SSH tunnel from the victim's port 109 to an attacker-controlled server. This method was explicitly designed to bypass firewall restrictions by initiating an outbound connection, granting the actor a covert command line conduit directly into the compromised environment.
This same exact mechanism was not merely echoed but operationally replicated in subsequent reporting by Kaspersky in April 2025 that details how the TookPS downloader retrieves PowerShell scripts whose sole function is to fetch sshd.exe, a config file, and an RSA key to execute a near-identical SSH reverse tunnel command, with the same strategic goal of establishing attacker-controlled remote access. BlueVoyant’s own findings above confirm this vector remains a core, active component of the attack chain. The malicious PowerShell scripts delivered by the TookPS downloader persistently query for and, if absent, proceed to download SSH-related binaries and dependencies to establish this covert tunnel, proving this is not an abandoned tactic but a fundamental and enduring pillar of Rift Brigantine's remote persistence model.
While the SSH tunnel provides a robust, low-profile command line foothold, it is deployed in tandem with a second, more versatile remote access payload (msi.dll) delivered through DLL sideloading abusing TeamViewer, a pairing that has also remained consistent. This payload, reported variably as MineBridge RAT by Zscaler in 2021 and as TeviRAT by Kaspersky, is described with identical functionality—covert remote control via a hijacked, legitimate GUI application. The convergence of these descriptions from different vendors across a four-year span strongly indicates they are documenting the same core malware family, a signature tool in Rift Brigantine's arsenal and now linked by BlueVoyant researchers.
Rift Brigantine demonstrates a versatile and highly adaptable approach to initial access, strategically aligning its lures with the professional interests of its intended targets. The overarching theme of these vectors reflects a calculated focus from targeting individual users to enterprise IT environments. As documented in 2021, the group relied on malicious websites and downloaders impersonating consumer and niche professional software, including cryptocurrency trading platforms (TradingView, Bitcoin_Trade, Arbitrage_Bot) and creative tools (Polarr Photo Editor). By 2025, analysis showed the use of fraudulent versions of widely used business and design applications such as AutoCAD, SketchUp, Ableton, and Quicken, suggesting a broader targeting of professionals in finance, engineering, and creative industries.
BlueVoyant’s recent research reveals the latest and most concerning evolution: the actor has aggressively pivoted to spoofing critical IT administration, security, and remote access software. This is evidenced by our analysis of malicious GitHub repositories and recovered file names, which include spoofed installers for Microsoft Remote Desktop/RDCMan, Palo Alto GlobalProtect, Zscaler Client Connector, Cisco AnyConnect, VMware Horizon, Azure Virtual Desktop, F5 BIG-IP Edge Client, and ScreenConnect. The inclusion of tools like PsExec, Windows Admin Center, and Power BI Desktop further underscores a deliberate focus on tools used by system administrators, network engineers, and security personnel.
Furthermore, this actor does not rely solely on deceptive downloads from spoofed websites or fake GitHub repos of legitimate tools; as noted in recent reporting, they have also employed spear-phishing campaigns—such as one described by Trellix aimed at security researchers using malicious Word documents with social engineering lures. This highlights a multi-faceted initial access strategy that combines technical deception with direct social engineering to maximize the likelihood of a successful compromise.
The entire attack sequence is orchestrated by the TookPS downloader framework, which facilitates fingerprinting, modular script execution, and infrastructure rotation. The campaign continues to expand its toolset with additional payloads like a Node.js RAT (mcl.js) and the Lapmon backdoor. In summary, Rift Brigantine operates with a stable and effective core playbook: the TookPS downloader delivers a one-two punch of a persistent reverse SSH tunnel and the MineBridge RAT, adapting the initial lure and secondary payloads while maintaining these foundational attack vectors for years. The enduring presence of the reverse SSH tunnel, similarly implemented from 2021 through 2025 (with precursors back to late 2018), serves as one of the highest-fidelity indicators for identifying this actor's intrusions.
Conclusion
The campaign detailed in this report underscores the persistent and adaptable threat posed by the financially motivated actor Rift Brigantine (TA505/FIN11). This investigation confirms that recent activity involving malicious GitHub installers and the TookPS downloader is not an isolated event, but the latest evolution in a multi-year offensive. The actor’s tradecraft has matured from distributing fake trading and creative software to meticulously spoofing critical enterprise IT and security tools—such as remote desktop clients, VPNs, and endpoint management utilities—indicating a strategic shift towards compromising network administrators and security professionals for deeper, more impactful intrusions. This evolution in lures is matched by a consistent and modular technical backbone, which has remained remarkably stable for years.
At the heart of this longevity are two unbroken, signature techniques: the deployment of a reverse SSH tunnel for stealthy command-line access and the sideloading of the MineBridge/TeviRAT payload via abused legitimate software like TeamViewer. These methods, documented independently by multiple security vendors from 2021 through 2025—and with clear technical precursors in TA505’s ServHelper malware from 2018—demonstrate a core playbook that the actor refines rather than reinvents. The TookPS framework serves as the agile orchestrator of this playbook, enabling fingerprinting, staged execution, and regular infrastructure rotation to evade detection while delivering a flexible payload suite that now includes Node.js backdoors and additional credential stealers.
Ultimately, Rift Brigantine represents a formidable and enduring adversary. Their operations are characterized by strategic targeting, operational consistency, and incremental adaptation. Defenders should treat the TookPS downloader, the presence of unauthorized reverse SSH tunnels, and the abuse of tools like TeamViewer in conjunction with suspicious DLLs as high-fidelity indicators of compromise. Vigilance against software downloads from unofficial sources, combined with robust monitoring for the living-off-the-land techniques and network patterns outlined in this report, is essential to mitigate the risk posed by this persistent threat actor.
MITRE ATT&CK Techniques
T1016 (System Network Configuration Discovery)
T1021.004 (Remote Services: SSH)
T1027 (Obfuscated Files or Information)
T1027.007 (Dynamic API Resolution)
T1033 (System Owner/User Discovery)
T1036.005 (Masquerading: Masquerade File Type)
T1049 (System Network Connections Discovery)
T1055.011 (Extra Window Memory Injection)
T1057 (Process Discovery)
T1059.001 (PowerShell)
T1071.001 (Application Layer Protocol: Web Protocols)
T1082 (System Information Discovery)
T1090.001 (Proxy: Internal Proxy)
T1105 (Ingress Tool Transfer)
T1140 (Deobfuscate/Decode Files or Information)
T1204.002 (User Execution: Malicious File).
T1518.001 (Security Software Discovery)
T1566.002 (Phishing – Spear phishing)
T1567.002 (Exfiltration Over Web Service to Cloud Storage)
T1573.001 (Encrypted Channel: Symmetric Cryptography)
T1574.002 (DLL Side-Load)
T1587.001 (Develop Capabilities: Malware)
T1588.001 (Obtain Capabilities: Malware)
Indicators of Compromise
URLs
hxxps://glucogenics[.]com/static_image/
hxxps://ifconfig[.]me/ip
Domains
glucogenics[.]com
ankaraotogaleri[.]com
base22[.]digital
ptk2[.]xyz
2tnl[.]digital
livewallpapers[.]online
IPs
158.69.225[.]31
FileHashes
2e41090cff76d78a9799011c520f935dea667bf329510bf9336bd0423978bd4f
d60900d3d23f95a19762a1ee612bd7cb74065ee5d04bcdf365649bf3b72687a2
8f0b534004fd7c5d38179c3c1dd260f49c15ddf742be987eafdd2bdc4e12a5b2
0d417701e7c5718cefa2569ebcdcb011fdde0a80bff9a23d571332ee9901c44d
a18fc2b9805de0f27aa71a18292f9dbb20c21699991b8da74e57a1bf13101c85
5186deacf361847f73fd2820a25896c6231e68324850b1d23d00314727601024
Related Reading

Threat Intelligence
How Replicating Marauder Rewired the Supply Chain Playbook

Threat Intelligence
The OtterCookie Matryoshka

Third-Party Risk Management
Using Agentic AI to Scale Threat Detection in Healthcare


