SolyxImmortal Python Infostealer — Chromium/Firefox Credential & Cookie Theft, Keylogging, Discord Webhook Exfiltration (Turkish-Speaking Actor)
SolyxImmortal Python Infostealer (TL-2026-0659), also tracked as SolyxImmortal, is a high-severity malware campaign, first published 2026-06-02. It has no confirmed attribution, affects Microsoft Windows, maps to 16 MITRE ATT&CK techniques (T1005, T1027, T1036.005), and is covered by 9 detection rules and 16 indicators of compromise.
Key facts for TL-2026-0659
- Threat ID
- TL-2026-0659
- Also known as
- SolyxImmortal, Solyx Immortal, Solyx
- Severity
- HIGH
- Status
- ACTIVE
- Category
- MALWARE
- First published
- 2026-06-02
- Last reviewed
- 2026-06-02
- Attribution confidence
- NONE
- Motivation
- FINANCIAL
- Target sectors
- individuals, small-business, education, technology, gaming
- Target regions
- Turkey, Europe, Global
- Detection rules
- 9
- Indicators of compromise
- 16
Malware and tooling in SolyxImmortal Python Infostealer
Malware and tooling: Discord webhook C2/exfiltration
SolyxImmortal is a Python-based Windows infostealer first observed in January 2026, sold on an underground Telegram commodity-malware channel and attributed with medium confidence to a Turkish-speaking actor. A ~10KB monolithic script (Lethalcompany.py) steals Chromium credentials via DPAPI/AES-GCM, copies Firefox cookie databases, logs keystrokes, captures screenshots on financial/auth window triggers, harvests documents, persists via an AppData self-copy plus a user Run key, and exfiltrates everything over two hardcoded Discord webhooks.
How SolyxImmortal Python Infostealer works
SolyxImmortal is a commodity Python information stealer targeting Windows endpoints, first observed in January 2026 and analyzed publicly by CYFIRMA, SecurityWeek, PolySwarm, SOC Prime, and Cyber Security News. The sample (Lethalcompany.py, 10.29 KB, SHA-256 5a1b440861ef652cc207158e7e129f0b3a22ed5ef5d2ea5968e1d9eff33017bc) is a single, dependency-light script that bundles credential theft, cookie theft, keylogging, screen surveillance, document harvesting, and persistence into one continuously running implant. It runs entirely in user context with no UI or console output and requires no administrative privileges.
Execution flow: a central controller class initializes on launch, resolving %TEMP% and the user home directory for staging, then establishes persistence before spawning concurrent surveillance threads. Persistence is achieved by copying the script (packaged as an executable) into %APPDATA%\WindowsGraphics\win_gfx_driver.exe, applying Hidden and System attributes to reduce visibility, and writing the value 'WindowsGfxDriver' under HKCU\Software\Microsoft\Windows\CurrentVersion\Run so the implant relaunches at every user logon (T1547.001, T1564.001).
Credential theft targets Chromium-based browsers (Chrome, Edge, Brave, OperaGX). The malware reads the AES-GCM master key from each browser's Local State file, unwraps it with the Windows DPAPI bound to the current user, and decrypts the Login Data SQLite database to recover plaintext usernames and passwords (T1555.003, T1552.001). Recovered credentials are aggregated in plaintext into a file named sifreler.txt (Turkish for 'passwords'). Firefox cookies are stolen by directly copying the profile's cookie database rather than decrypting them.
Surveillance runs on dedicated threads. A persistent keyboard listener buffers keystrokes in memory, converting special keys (Enter, Backspace, modifiers) to readable tokens, and a background thread serializes the buffer to JSON and exfiltrates it roughly every 60 seconds before clearing it (T1056.001). An active-window monitor compares foreground window titles against keyword sets (including Turkish-language terms for banking sites, Gmail, and sign-in pages); on a match it captures and immediately transmits a screenshot (saved as alert.png) to a dedicated screenshot webhook, and it also takes routine screenshots roughly every 2 minutes regardless of activity (T1113). Document harvesting recursively enumerates the user home directory, filtering by extension (.doc, .pdf, .xls, etc.) and size thresholds, stages files in a %TEMP% folder named Solyx_Pack_Final, and compresses them into Solyx_Final_Data.zip (T1083, T1005).
Exfiltration uses two hardcoded Discord webhooks over HTTPS POST (via the Python requests library): one for structured data (credentials, document archives, keystroke logs) and a second dedicated to screenshots (T1041, T1567.004, T1102.003). A hardcoded Discord user ID is embedded so the operator is @-mentioned on high-value events. After successful transmission, staging files are deleted to reduce forensic artifacts, although the implant itself persists indefinitely. The actual webhook URLs and Discord user ID were not disclosed in public reporting.
The malware uses limited obfuscation — it relies on Discord's trusted HTTPS infrastructure and reputation for evasion, compresses harvested data, and wraps operations in silent exception handling so it does not crash or surface error dialogs (T1027). Attribution is medium confidence to a Turkish-speaking developer based on linguistic, structural, and operational indicators (e.g., the sifreler.txt artifact and Turkish keyword lists) and distribution via Telegram channels serving low-to-medium-sophistication, hacktivist-oriented actors rather than structured cybercrime. The threat is opportunistic: any organization whose users execute the script is at risk of browser credential, cookie, document, keystroke, and screen compromise.
MITRE ATT&CK techniques used in TL-2026-0659
Collection
T1005 Data from Local System; T1056.001 Input Capture: Keylogging; T1113 Screen Capture; T1560.001 Archive Collected Data: Archive via Utility
Defense Evasion
T1027 Obfuscated Files or Information; T1036.005 Match Legitimate Resource Name or Location; T1564.001 Hide Artifacts: Hidden Files and Directories
Exfiltration
T1041 Exfiltration Over C2 Channel; T1567.004 Exfiltration Over Web Service: Exfiltration Over Webhook
Execution
T1059.006 Command and Scripting Interpreter: Python
Discovery
T1083 File and Directory Discovery
Command and Control
T1102.003 Web Service: One-Way Communication
Credential Access
T1539 Steal Web Session Cookie; T1552.001 Unsecured Credentials: Credentials In Files; T1555.003 Credentials from Password Stores: Credentials from Web Browsers
Persistence
T1547.001 Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder
Affected products and versions in SolyxImmortal Python Infostealer
- Microsoft — Windows
Vulnerable versions: 10; 11; Server 2016-2022 (user context) - Google — Chrome (Chromium-based browsers)
Vulnerable versions: all with saved credentials - Microsoft — Edge
Vulnerable versions: all with saved credentials - Brave Software — Brave
Vulnerable versions: all with saved credentials - Opera — OperaGX
Vulnerable versions: all with saved credentials - Mozilla — Firefox
Vulnerable versions: all (cookie database copied)
Remediation for SolyxImmortal Python Infostealer
Immediate actions
- Hunt for %APPDATA%\WindowsGraphics\win_gfx_driver.exe and the HKCU Run value 'WindowsGfxDriver'; remove both if present
- Block or alert on outbound HTTPS POSTs to discord.com/api/webhooks from non-Discord-client processes (especially python.exe / pythonw.exe)
- Search endpoints for sifreler.txt, Solyx_Final_Data.zip, alert.png, and a %TEMP%\Solyx_Pack_Final staging folder
- Force-reset credentials for any browser-saved logins on confirmed-infected hosts; treat stored passwords as compromised
Workarounds
- Apply application control to block execution from %APPDATA% and %TEMP%
- Network-layer block of discord.com/api/webhooks for endpoints with no legitimate Discord use case
Longer-term hardening
- Deploy EDR with behavioral detection for browser Login Data / Local State access and keyboard-hook activity by interpreter processes
- Restrict execution of standalone Python scripts and unsigned EXEs from user-writable paths via application control (WDAC/AppLocker)
- Discourage use of browser-saved passwords; mandate an enterprise password manager and phishing-resistant MFA
- Monitor and, where feasible, restrict egress to Discord webhook endpoints from corporate endpoints
Weaknesses (CWE) in SolyxImmortal Python Infostealer
CWE-522, CWE-312
Timeline of SolyxImmortal Python Infostealer
- Malware advertised and distributed via an underground Telegram channel serving commodity-malware and hacktivist-oriented actors.
- SolyxImmortal first observed in the wild; sample Lethalcompany.py (SHA-256 5a1b4408...) appears on Malware Bazaar.
- CYFIRMA publishes detailed Python malware analysis documenting credential theft, keylogging, screen capture, and Discord webhook exfiltration.
- SecurityWeek, PolySwarm, Cyber Security News, and CyberPress report on the stealer, confirming hashes and Turkish-speaking attribution at medium confidence.
- SOC Prime releases detection content (IOC matching plus Discord webhook exfiltration and persistence behavior rules).
- Threadlinqs Intelligence publishes full threat profile TL-2026-0659 with MITRE mapping, IOCs, simulations, and detections.
Sources cited for SolyxImmortal Python Infostealer
- CYFIRMA — SolyxImmortal: Python Malware Analysis
- SecurityWeek — 'SolyxImmortal' Information Stealer Emerges
- PolySwarm — SOLYXIMMORTAL: A Python-Based Infostealer
- SOC Prime — SolyxImmortal Python Stealer Exfiltrates via Discord
- Cyber Security News — SolyxImmortal Python Malware Steals Browser Passwords, Cookies, Files, and Keystrokes
- CyberPress — Python-Based SolyxImmortal Malware Abuses Discord to Silently Steal Sensitive Data
Threats related to SolyxImmortal Python Infostealer
- Lucid Stealer — Node.js-Wrapped Windows Infostealer with Hidden Remote Access (HVNC)
- Python NodeStealer Evolves via AI-Assisted Development into Full Spyware Targeting Facebook Business Accounts
- Browser-Only Ransomware (InfernoGrabber v9.0) Abuses Chrome File System Access API to Encrypt Android Photos
Detection coverage for TL-2026-0659
As of 2026-06-02, Threadlinqs Intelligence publishes 9 detection rule(s) for TL-2026-0659 across Splunk SPL, Microsoft KQL and Sigma, covering 16 indicator(s) of compromise. The whole corpus is readable without an account; a free account unlocks full detection query text in Splunk SPL, Microsoft KQL and Sigma; paid tiers add raw indicator values, correlation and the MCP server. Threadlinqs MCP server · View plans.