Classification: TLP:WHITE | Threat Level: HIGH | Sector Focus: Government, Transportation, Defense, Telecommunications
Threat Summary
An exposed open directory attributed to Silent Lynx — a Central Asia-focused cyber-espionage cluster assessed to overlap with the activity tracked as YoroTrooper — has given researchers an unusually deep look into a live nation-state-aligned intrusion set. The directory contained operational tooling, exfiltrated data from active intrusions, and — notably — an AI agent used by the operator to scale collection and likely assist with translation, triage, or social-engineering content generation across multiple target languages.
The campaign remains active through October 2026 and is laser-focused on Central Asia and the surrounding region: Armenia, Kyrgyzstan, Pakistan, Tajikistan, Turkmenistan, and Uzbekistan. Victimology is consistent with strategic intelligence collection: government correspondence harvested at scale, persistent access inside transportation networks (rail and logistics infrastructure), defense entities, and telecommunications providers — the latter enabling upstream surveillance and potential traffic manipulation.
The operational attack chain follows the established Silent Lynx/YoroTrooper playbook:
- Initial Access — Spearphishing with malicious archives (RAR/ZIP) and LNK-based loaders, frequently masquerading as official government or diplomatic documents in Russian and regional languages.
- Execution & Staging — Multi-stage droppers deliver the Laplas stealer and Chvost implant, often wrapped in obfuscated Python/.NET loaders.
- Persistence — Scheduled tasks and registry Run keys disguised as legitimate system components.
- Collection & Exfiltration — Browser credentials, cookies, documents, and correspondence are staged and exfiltrated to actor infrastructure, with PickleShell (Python pickle-deserialization backdoor) providing an interactive fallback channel.
- Long-Term Access — Persistent implants inside transport and telecom networks enable ongoing espionage rather than smash-and-grab theft.
The objective is unambiguous: sustained strategic espionage against government and critical-infrastructure entities in the Central Asian theater, with particular interest in transport networks and diplomatic correspondence.
Threat Actor / Malware Profile
Silent Lynx / YoroTrooper (Adversary)
A Central Asia-oriented espionage actor active since at least 2022, characterized by commodity-grade tooling combined with disciplined regional targeting. The group favors Russian-language lure documents, abuses legitimate file-hosting for staging, and cycles infrastructure across Eastern European and Central Asian hosting providers. The discovery of an operator-side AI agent in the exposed directory signals an evolution: machine-assisted processing of stolen correspondence and likely AI-augmented phishing content generation.
Laplas (Clipper/Stealer)
- Distribution: Delivered via phishing archives and loader implants; frequently bundled alongside other stealers.
- Payload behavior: Harvests browser credentials, cookies, cryptocurrency wallets, and clipboard data; includes clipper functionality that swaps copied wallet addresses with actor-controlled ones.
- C2 communication: HTTPS POST to hardcoded C2 endpoints, exfiltrating staged ZIP archives.
- Persistence: Typically non-persistent (single-run smash-and-grab), relying on companion implants for longevity.
- Anti-analysis: String obfuscation, packed .NET payloads, sandbox-aware sleep delays.
Chvost (Implant/Loader)
- Distribution: Second-stage payload dropped by LNK/VBS loaders from spearphishing attachments.
- Payload behavior: Modular downloader/backdoor; profiles host (hostname, OS, AV products), retrieves follow-on modules.
- C2 communication: Beaconing over HTTP/S to actor VPS infrastructure (e.g., the 89.125.213.123 / 134.17.14.24 nodes).
- Persistence: Scheduled tasks mimicking system update jobs; registry Run keys under HKCU\Software\Microsoft\Windows\CurrentVersion\Run.
- Anti-analysis: Environment checks, Base64/XOR-encoded configuration blobs, delayed execution.
PickleShell (Python Backdoor)
- Distribution: Deployed to high-value compromised hosts as an interactive access channel.
- Payload behavior: Leverages Python
pickledeserialization to execute arbitrary commands; functions as a lightweight reverse shell. - C2 communication: Raw socket or HTTP-based command channel; small, low-and-slow tasking consistent with hands-on-keyboard espionage.
- Persistence: Survives via the persistence established by Chvost or standalone scheduled tasks invoking
python.exe/pythonw.exewith encoded payloads. - Anti-analysis: Lives off legitimate Python interpreters; payload stored as Base64 blobs, evading static signature detection.
IOC Analysis
The pulse provides 19 indicators across three types:
| Type | Indicators | Operational Context |
|---|---|---|
| IPv4 | 89.125.213.123 (AS25441, IE — Imagine Communications), 134.17.14.24 (AS25106, BY — Mobile TeleSystems JLLC) | C2 / staging servers on European & Belarusian hosting; consistent with actor VPS rotation |
| Domain | foreverpeace.ru | Actor-registered domain, likely used for C2 resolution, lure hosting, or document-tracking links |
| File Hashes | MD5 d3e3d99b077a4193b1d93b604b096456, SHA1 b9eda9b9a780e91a3f99334df3ce508ca6fb32fa, SHA256 efc1bbb873e9b691657a66e987b0ea87c454bb16e89126d1a41bcaa9bae9fab1 | All three hashes describe the same sample (per indicator descriptions) — a single Laplas/Chvost-family binary; triangulate across hash types for legacy tooling |
How SOC teams should operationalize these:
- Network controls: Block the two IPv4 indicators at the perimeter (egress firewall, web proxy, DNS sinkhole for
foreverpeace.ru). Note the duplicate indicators with enriched ASN/country metadata — deduplicate before import to avoid rule bloat. - DNS telemetry: Query historical DNS (PassiveTotal, SecurityTrails, internal Infoblox) for
foreverpeace.ruresolutions to identify internal hosts that resolved it, even if connections were blocked. - EDR retro-hunt: Sweep for the SHA256 across all endpoints going back 90+ days; the MD5/SHA1 variants allow matching in tooling that hasn't migrated to SHA256.
- Threat intel platforms: Ingest the pulse into MISP/OpenCTI with the
central asia,espionage,laplas,chvost,pickleshelltags for correlation against future pulses. - Enrichment tooling: OTX DirectConnect API,
otxPython SDK, orcurl "https://otx.alienvault.com/api/v1/indicators/file/<sha256>/general"for pivot analysis.
Detection Engineering
---
title: Silent Lynx PickleShell Python Deserialization Execution
id: 8f2c1a3e-7b4d-4e9a-a1c5-2d6f8b3e9a01
status: experimental
description: Detects suspicious Python interpreter execution consistent with PickleShell backdoor usage — python/pythonw spawned with Base64-encoded or pickle-related arguments, commonly deployed by Silent Lynx/YoroTrooper as an interactive espionage channel.
references:
- https://otx.alienvault.com/pulse/
- https://www.cloudsek.com/blog/off-the-rails-inside-an-exposed-silent-lynx-server
author: Security Arsenal Threat Intelligence
date: 2026/11/12
tags:
- attack.execution
- attack.t1059.006
logsource:
category: process_creation
product: windows
Detection:
selection_image:
Image|endswith:
- '\python.exe'
- '\pythonw.exe'
selection_cmd:
CommandLine|contains:
- 'pickle.loads'
- 'cPickle'
- '__reduce__'
- 'base64.b64decode'
- 'import pickle'
- ' -c '
condition: selection_image and selection_cmd
falsepositives:
- Legitimate Python development or automation scripts
degree: high
---
title: Silent Lynx Laplas Chvost Persistence via Scheduled Task or Run Key
id: 1a7d3f92-4c5e-4b8a-9d2e-6f1a3c8e5b02
status: experimental
description: Detects persistence mechanisms used by Chvost and Laplas implants — scheduled task creation or registry Run key modification pointing to payloads in user-writable directories (AppData, Temp, ProgramData), as observed in Silent Lynx operations against Central Asian targets.
references:
- https://www.cloudsek.com/blog/off-the-rails-inside-an-exposed-silent-lynx-server
author: Security Arsenal Threat Intelligence
date: 2026/11/12
tags:
- attack.persistence
- attack.t1053.005
- attack.t1547.001
logsource:
category: process_creation
product: windows
Detection:
selection_schtasks:
Image|endswith: '\schtasks.exe'
CommandLine|contains: '/create'
selection_reg:
Image|endswith:
- '\reg.exe'
- '\regedit.exe'
CommandLine|contains:
- 'CurrentVersion\Run'
selection_paths:
CommandLine|contains:
- '\AppData\Roaming\'
- '\AppData\Local\Temp\'
- '\ProgramData\'
- '%APPDATA%'
- '%TEMP%'
condition: (selection_schtasks or selection_reg) and selection_paths
falsepositives:
- Software installers and enterprise deployment tools
degree: medium
---
title: Silent Lynx C2 Communication to Known Infrastructure
id: 5c9e2b41-8a3f-4d7c-b6e1-9f4a2d7c3e03
status: experimental
description: Detects network connections to known Silent Lynx/YoroTrooper C2 infrastructure identified in OTX pulse — IPv4 addresses 89.125.213.123 and 134.17.14.24 and domain foreverpeace.ru used for Laplas/Chvost beaconing and exfiltration.
references:
- https://www.cloudsek.com/blog/off-the-rails-inside-an-exposed-silent-lynx-server
author: Security Arsenal Threat Intelligence
date: 2026/11/12
tags:
- attack.command_and_control
- attack.t1071.001
logsource:
category: network_connection
product: windows
Detection:
selection_ip:
DestinationIp:
- '89.125.213.123'
- '134.17.14.24'
selection_domain:
DestinationHostname|contains: 'foreverpeace.ru'
condition: selection_ip or selection_domain
falsepositives:
- None expected; these are confirmed adversary infrastructure
degree: critical
// Silent Lynx / YoroTrooper Hunt — C2, Persistence, and Python Backdoor Behavior
// Microsoft Sentinel / Defender XDR — run over last 30 days minimum
let maliciousIPs = dynamic(["89.125.213.123", "134.17.14.24"]);
let maliciousDomain = "foreverpeace.ru";
let iocHits = DeviceNetworkEvents
| where TimeGenerated > ago(30d)
| where RemoteIP in (maliciousIPs)
or RemoteUrl has maliciousDomain
| project IoCMatch="Network-C2", TimeGenerated, DeviceName, RemoteIP, RemoteUrl,
RemotePort, InitiatingProcessFileName, InitiatingProcessCommandLine, AccountName;
let pythonBackdoor = DeviceProcessEvents
| where TimeGenerated > ago(30d)
| where FileName in~ ("python.exe", "pythonw.exe", "py.exe")
| where ProcessCommandLine has_any ("pickle", "b64decode", "__reduce__", "-c ")
or (ProcessCommandLine matches regex @"[A-Za-z0-9+/]{100,}={0,2}")
| project IoCMatch="PickleShell-Behavior", TimeGenerated, DeviceName,
InitiatingProcessFileName, ProcessCommandLine, AccountName, FileName;
let persistenceArtifacts = DeviceProcessEvents
| where TimeGenerated > ago(30d)
| where (FileName =~ "schtasks.exe" and ProcessCommandLine has "/create")
or (FileName in~ ("reg.exe", "regedit.exe") and ProcessCommandLine has "CurrentVersion\\Run")
| where ProcessCommandLine has_any ("AppData", "ProgramData", "%TEMP%", "%APPDATA%")
| project IoCMatch="Persistence-Behavior", TimeGenerated, DeviceName,
InitiatingProcessFileName, ProcessCommandLine, AccountName, FileName;
union iocHits, pythonBackdoor, persistenceArtifacts
| summarize FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated),
HitCount=count(), Artifacts=make_set(IoCMatch)
by DeviceName, AccountName
| order by HitCount desc;
# Silent Lynx / YoroTrooper IOC Hunt Script
# Checks: network connections, Run keys, scheduled tasks, and file hash presence
# Run as Administrator on suspected endpoints. Output: console + CSV artifact.
$ErrorActionPreference = 'SilentlyContinue'
$report = @()
Write-Host "[+] Silent Lynx / YoroTrooper Hunt — $(Get-Date)" -ForegroundColor Cyan
# --- 1. Active & historical network connections to C2 infrastructure ---
$c2IPs = @('89.125.213.123', '134.17.14.24')
Write-Host "[*] Checking network connections to known C2 IPs..." -ForegroundColor Yellow
$conns = Get-NetTCPConnection | Where-Object { $c2IPs -contains $_.RemoteAddress }
foreach ($c in $conns) {
$proc = Get-Process -Id $c.OwningProcess
$report += [PSCustomObject]@{
Check = 'Network-C2'; Status = 'HIT'; Host = $env:COMPUTERNAME
Detail = "$($proc.ProcessName) (PID $($c.OwningProcess)) -> $($c.RemoteAddress):$($c.RemotePort) [$($c.State)]"
}
}
# --- 2. DNS cache check for foreverpeace.ru ---
Write-Host "[*] Checking DNS cache for foreverpeace.ru..." -ForegroundColor Yellow
$dns = Get-DnsClientCache | Where-Object { $_.Entry -like '*foreverpeace.ru*' }
foreach ($d in $dns) {
$report += [PSCustomObject]@{
Check = 'DNS-Cache'; Status = 'HIT'; Host = $env:COMPUTERNAME
Detail = "$($d.Entry) -> $($d.Data)"
}
}
# --- 3. Registry Run keys pointing to user-writable paths (Chvost persistence) ---
Write-Host "[*] Auditing Run keys for suspicious persistence..." -ForegroundColor Yellow
$runKeys = @(
'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run',
'HKLM:\Software\Microsoft\Windows\CurrentVersion\Run'
)
foreach ($key in $runKeys) {
Get-ItemProperty -Path $key | ForEach-Object {
$_.PSObject.Properties | Where-Object {
$_.Name -notmatch '^PS' -and
$_.Value -match 'AppData|Temp|ProgramData|python'
} | ForEach-Object {
$report += [PSCustomObject]@{
Check = 'RunKey'; Status = 'REVIEW'; Host = $env:COMPUTERNAME
Detail = "$key :: $($_.Name) = $($_.Value)"
}
}
}
}
# --- 4. Scheduled tasks executing from user-writable paths ---
Write-Host "[*] Auditing scheduled tasks for Chvost-style persistence..." -ForegroundColor Yellow
Get-ScheduledTask | ForEach-Object {
$task = $_
$task.Actions | Where-Object {
$_.Execute -match 'AppData|Temp|ProgramData|python' -or $_.Arguments -match 'AppData|Temp|b64'
} | ForEach-Object {
$report += [PSCustomObject]@{
Check = 'SchedTask'; Status = 'REVIEW'; Host = $env:COMPUTERNAME
Detail = "$($task.TaskName) :: $($_.Execute) $($_.Arguments)"
}
}
}
# --- 5. File hash sweep in high-risk directories ---
$targetHash = 'efc1bbb873e9b691657a66e987b0ea87c454bb16e89126d1a41bcaa9bae9fab1'
Write-Host "[*] Sweeping for known Laplas/Chvost sample hash..." -ForegroundColor Yellow
$searchPaths = @("$env:APPDATA", "$env:LOCALAPPDATA\Temp", "$env:ProgramData", "$env:USERPROFILE\Downloads")
foreach ($path in $searchPaths) {
Get-ChildItem -Path $path -Recurse -File -Include *.exe,*.dll,*.py,*.ps1,*.lnk -ErrorAction SilentlyContinue | ForEach-Object {
$hash = (Get-FileHash -Path $_.FullName -Algorithm SHA256).Hash
if ($hash -eq $targetHash) {
$report += [PSCustomObject]@{
Check = 'FileHash'; Status = 'HIT'; Host = $env:COMPUTERNAME
Detail = "MALWARE SAMPLE FOUND: $($_.FullName)"
}
}
}
}
# --- Output ---
if ($report.Count -gt 0) {
$report | Format-Table -AutoSize | Out-String -Width 300 | Write-Host -ForegroundColor Red
$report | Export-Csv -Path ".\silentlynx_hunt_$(Get-Date -Format 'yyyyMMdd_HHmm').csv" -NoTypeInformation
Write-Host "[!] $($report.Count) findings exported to CSV. Escalate HIT items to IR immediately." -ForegroundColor Red
} else {
Write-Host "[OK] No Silent Lynx indicators found on $env:COMPUTERNAME." -ForegroundColor Green
}
Response Priorities
Immediate (0–4 hours)
- Block
89.125.213.123,134.17.14.24, andforeverpeace.ruat egress firewall, web proxy, and DNS layers; add SHA256efc1bbb873e9b691657a66e987b0ea87c454bb16e89126d1a41bcaa9bae9fab1to EDR blocklists. - Retro-hunt proxy, firewall, and DNS logs for 90+ days for any contact with the C2 infrastructure — the group maintains persistent access, so historical hits likely indicate active compromise.
- Execute the PowerShell hunt script against endpoints in government-facing, transportation, telecom, and defense business units first.
- Isolate any host with a confirmed C2 connection or hash match; capture memory before remediation for forensic analysis of PickleShell's in-memory footprint.
24 Hours
- Force credential resets for all users on any host showing Laplas execution artifacts — Laplas harvests browser-stored credentials, session cookies, and cryptocurrency wallets. Prioritize privileged and VPN-capable accounts.
- Revoke active sessions/tokens (OAuth, SSO, cloud consoles) for affected users; cookie theft enables session hijacking that survives password resets.
- Review outbound data volumes from identified hosts — this actor exfiltrates government correspondence at scale; quantify exposure for disclosure obligations.
- Audit Python interpreter usage across the fleet; alert on python.exe/pythonw.exe spawning from Office processes, LNK files, or scheduled tasks.
1 Week
- Harden email gateway against LNK-in-archive delivery: block or detonate RAR/ZIP attachments containing .lnk, .vbs, .js, .hta; enforce Mark-of-the-Web propagation.
- Restrict script interpreters via WDAC/AppLocker — constrain Python and PowerShell execution for non-administrative users, directly blunting PickleShell and loader staging.
- Deploy the Sigma rules above into production SIEM with 30-day lookback baselining; tune the persistence rule against known software-deployment tooling.
- Segment transportation/OT and telecom management networks from general IT — persistent access to transport networks is this actor's signature objective; assume dwell time and hunt laterally.
- Brief regional executives and government-affairs teams on AI-augmented phishing risk: the operator's AI agent suggests highly convincing, localized lure content. Update phishing simulations accordingly.
Related Resources
Security Arsenal Incident Response Managed SOC & MDR Services AlertMonitor Threat Detection From The Dark Side Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.