Back to Intelligence

TencShell/Vshell AI-Assisted Intrusions + Project CAV3RN Google Apps Script C2: OTX Pulse Analysis — Enterprise Detection Pack

SA
Security Arsenal Team
August 13, 2026
10 min read

Two live OTX pulses published 2026-08-13 reveal a converging trend that should alarm every SOC lead: adversaries are industrializing attack operations with AI tooling and abusing legitimate SaaS infrastructure as C2 relays. One campaign shows suspected Chinese operators weaponizing Claude Code and DeepSeek for attack automation against government systems in four countries. The other — Project CAV3RN — demonstrates a mature modular espionage framework routing C2 through Google Apps Script to evade perimeter controls. This briefing breaks down both campaigns and ships detection content your team can deploy today.

Threat Summary

These pulses collectively paint a picture of operationally sophisticated, infrastructure-fluid adversaries:

Campaign 1 — AI-Augmented Government Intrusions (TencShell / Vshell / Gshell / HSEWH-Ur). Infrastructure pivoting from TencShell C2 nodes exposed thirteen Hong Kong-based servers spanning four ASNs. An open directory on this infrastructure contained victim source code, custom exploits, operational logs, and cloned login pages annotated in Simplified Chinese. The operators used Claude Code and DeepSeek to automate attack execution — a watershed moment in LLM-powered offensive operations. Targets span government, finance, telecommunications, chemical, manufacturing, and semiconductor sectors across the United States, Afghanistan, Taiwan, and Thailand. The webshell-heavy tooling (Vshell, Gshell, TencShell) combined with phishing and supply-chain targeting tags indicates a classic initial-access → webshell → post-exploitation chain.

Campaign 2 — Project CAV3RN (Israel). A modular espionage framework with a sophisticated channel-selection mechanism: DNS A-record responses dynamically instruct implants whether to use direct HTTPS or a Google Apps Script relay for each C2 transaction. This lets operators rotate communication channels and deployment identifiers on the fly, defeating static blocklists. Modules include GoogleService.dll, CommunicationUxTheme.dll, net.dll, rnp.dll, and texture.dll — all masquerading as legitimate system or application components.

Collective objective: persistent, low-noise access into high-value government and strategic-industry networks for espionage and intellectual property theft — with AI tooling now compressing the attack lifecycle.

Threat Actor / Malware Profile

TencShell / Vshell / Gshell Cluster

  • Attribution: Suspected Chinese state-aligned operators (Simplified Chinese operational notes, Hong Kong staging infrastructure, target selection consistent with PRC strategic collection priorities). Formal attribution: Unknown.
  • Distribution: Phishing lures and supply chain targeting, with cloned login pages used for credential harvesting.
  • Payload behavior: Webshells (Vshell, Gshell) deployed post-compromise for persistent remote execution on internet-facing servers. TencShell operates as a C2 implant family.
  • C2 communication: Thirteen Hong Kong-hosted servers across four ASNs; exposed open directories served as operational staging (victim source code, custom exploits, logs).
  • Notable TTP: Use of commercial LLM tooling (Claude Code, DeepSeek) to automate exploit generation, execution workflows, and operational tasks — reducing operator skill requirements and accelerating tempo.

Project CAV3RN

  • Architecture: Modular espionage framework. Named DLLs suggest separation of concerns: CommunicationUxTheme.dll (comms), net.dll (network ops), GoogleService.dll (Apps Script relay), rnp.dll, texture.dll.
  • Distribution: Targeted delivery against Israeli entities (sector detail not disclosed).
  • C2 communication: Dual-channel. Per-transaction selection between (a) direct HTTPS to attacker infrastructure (e.g., api.studiotikva.com) and (b) Google Apps Script as a relay, inheriting Google's trusted reputation and TLS posture. DNS A-record responses encode the channel selection, blending signaling into normal DNS traffic (DNS tunneling behavior).
  • Anti-analysis: Masquerading module names ("GoogleService", "CommunicationUxTheme"), channel rotation to defeat netflow baselining, deployment-identifier rotation to break campaign clustering.
  • Persistence: Modular DLL sideloading patterns are consistent with persistence via legitimate host processes (hunt for unsigned DLLs loaded by trusted binaries).

IOC Analysis

The pulses provide three distinct operationalization tracks:

File hashes (Campaign 1 — 10 indicators shown). SHA256/SHA1/MD5 hashes for TencShell, Vshell, Gshell, and HSEWH-Ur samples. Hashes are highest-fidelity but most brittle — recompilation breaks them. Load all hash types into your EDR blocklist AND your threat intel platform (MISP/OpenCTI) with campaign tagging. Use them primarily for retro-hunting across email gateways, web proxies, and EDR telemetry rather than forward blocking alone.

Network infrastructure (Campaign 2 — 28 indicators). IPs 12.19.29.30, 12.121.234.120; domain studiotikva.com; hostnames api/ns1/ns2.studiotikva.com; URLs including /api/v1/update/check and /ac paths. Critical caveat: the primary C2 channel is Google Apps Script — blocking script.google.com or script.googleusercontent.com outright is usually not viable. Detection must therefore rely on behavioral analytics (beacon cadence, process-to-Apps-Script correlation) rather than domain blocking. The studiotikva.com infrastructure IS directly blockable.

Tooling to decode/enrich: OTX pulses feed directly into MISP and OpenCTI via the OTX DirectConnect API. Pivot IPs through PassiveTotal/Shodan for ASN and certificate history. Submit hashes to VirusTotal/MalwareBazaar for family confirmation. For DNS tunneling analysis, Zeek/Suricata dns.log with query-volume baselining is your best decoder.

Detection Engineering

YAML
---
title: Webshell Process Spawn from Web Server - TencShell/Vshell/Gshell Campaign
description: Detects command shell or scripting engine spawned by web server processes, consistent with Vshell/Gshell webshell activity observed in the AI-assisted government intrusion campaign
date: 2026/08/13
author: Security Arsenal Threat Intel
logsource:
    category: process_creation
    product: windows
    service: security-auditing
detection:
    selection_parent:
        ParentImage|endswith:
            - '\w3wp.exe'
            - '\httpd.exe'
            - '\nginx.exe'
            - '\tomcat.exe'
    selection_child:
        Image|endswith:
            - '\cmd.exe'
            - '\powershell.exe'
            - '\pwsh.exe'
            - '\cscript.exe'
            - '\wscript.exe'
            - '\certutil.exe'
    condition: selection_parent and selection_child
falsepositives:
    - Legitimate web application deployment scripts (rare in production)
level: high
tags:
    - attack.persistence
    - attack.t1505.003
    - attack.t1059
---
title: Project CAV3RN - Suspicious Outbound to Google Apps Script from Non-Browser Process
description: Detects non-browser processes establishing connections to Google Apps Script endpoints, matching CAV3RN's abuse of Google Apps Script as a C2 relay
date: 2026/08/13
author: Security Arsenal Threat Intel
logsource:
    category: network_connection
    product: windows
detection:
    selection_dest:
        DestinationHostname|endswith:
            - 'script.google.com'
            - 'script.googleusercontent.com'
    filter_browsers:
        Image|endswith:
            - '\chrome.exe'
            - '\msedge.exe'
            - '\firefox.exe'
            - '\iexplore.exe'
            - '\brave.exe'
    condition: selection_dest and not filter_browsers
falsepositives:
    - Enterprise automation legitimately calling Apps Script webhooks (allowlist by process hash and signing cert)
level: high
tags:
    - attack.command_and_control
    - attack.t1102
    - attack.t1071.001
---
title: CAV3RN DNS Channel Selection - High Volume TXT/A Query Pattern from Single Process
description: Detects processes generating abnormally high DNS query volume consistent with CAV3RN's DNS A-record based C2 channel negotiation and DNS tunneling behavior
date: 2026/08/13
author: Security Arsenal Threat Intel
logsource:
    category: dns_query
    product: windows
detection:
    selection:
        QueryName|contains:
            - 'studiotikva.com'
    condition: selection
falsepositives:
    - None expected - IOC-matched queries indicate compromise
level: critical
tags:
    - attack.command_and_control
    - attack.t1071.004
KQL — Microsoft Sentinel / Defender
// Project CAV3RN + TencShell Campaign Hunt — Microsoft Sentinel
// Hunts: C2 infrastructure hits, Apps Script abuse from non-browsers, webshell process chains
let cav3rn_ips = dynamic(["12.19.29.30", "12.121.234.120"]);
let cav3rn_hosts = dynamic(["studiotikva.com", "api.studiotikva.com", "ns1.studiotikva.com", "ns2.studiotikva.com"]);
let scriptHosts = dynamic(["script.google.com", "script.googleusercontent.com"]);
let browsers = dynamic(["chrome.exe", "msedge.exe", "firefox.exe", "iexplore.exe", "brave.exe"]);
union isfuzzy=true
(
    DeviceNetworkEvents
    | where TimeGenerated > ago(14d)
    | where RemoteIP in (cav3rn_ips)
       or RemoteUrl has_any (cav3rn_hosts)
    | project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteIP, RemoteUrl, RemotePort
    | extend HuntReason = "CAV3RN direct C2 infrastructure"
),
(
    DeviceNetworkEvents
    | where TimeGenerated > ago(14d)
    | where RemoteUrl has_any (scriptHosts)
    | where not(InitiatingProcessFileName has_any (browsers))
    | summarize ConnectionCount = count(), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated)
        by DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteUrl
    | extend HuntReason = "Non-browser process to Google Apps Script (CAV3RN relay pattern)"
),
(
    DeviceProcessEvents
    | where TimeGenerated > ago(14d)
    | where InitiatingProcessFileName in~ ("w3wp.exe", "httpd.exe", "nginx.exe", "tomcat.exe")
    | where FileName in~ ("cmd.exe", "powershell.exe", "pwsh.exe", "certutil.exe", "cscript.exe", "wscript.exe")
    | project TimeGenerated, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine, AccountName
    | extend HuntReason = "Webshell child process (Vshell/Gshell/TencShell pattern)"
)
| order by TimeGenerated desc
PowerShell
# Security Arsenal — CAV3RN & TencShell/Vshell IOC Hunt Script
# Run elevated on suspected endpoints or deploy via your EDR/Intune
$report = @()

# --- 1. Network connections to CAV3RN infrastructure ---
$c2Targets = @("12.19.29.30","12.121.234.120","studiotikva.com","api.studiotikva.com","ns1.studiotikva.com","ns2.studiotikva.com")
$conns = Get-NetTCPConnection -ErrorAction SilentlyContinue | Where-Object { $_.State -eq "Established" }
foreach ($c in $conns) {
    if ($c2Targets -contains $c.RemoteAddress) {
        $proc = Get-Process -Id $c.OwningProcess -ErrorAction SilentlyContinue
        $report += [pscustomobject]@{Check="C2 Connection"; Finding="$($proc.ProcessName) (PID $($c.OwningProcess)) -> $($c.RemoteAddress):$($c.RemotePort)"; Severity="CRITICAL"}
    }
}

# --- 2. DNS cache check for CAV3RN / Apps Script beaconing ---
$dns = Get-DnsClientCache -ErrorAction SilentlyContinue
foreach ($entry in $dns) {
    if ($entry.Entry -match "studiotikva|script\.google\.com|script\.googleusercontent\.com") {
        $report += [pscustomobject]@{Check="DNS Cache"; Finding="$($entry.Entry) -> $($entry.Data)"; Severity="HIGH"}
    }
}

# --- 3. CAV3RN module names on disk (masquerading DLLs) ---
$modules = @("GoogleService.dll","CommunicationUxTheme.dll","net.dll","rnp.dll","texture.dll")
$searchPaths = @("$env:ProgramData","$env:APPDATA","$env:TEMP","C:\Users\Public")
foreach ($p in $searchPaths) {
    foreach ($m in $modules) {
        $hits = Get-ChildItem -Path $p -Filter $m -Recurse -ErrorAction SilentlyContinue -Force
        foreach ($h in $hits) {
            $report += [pscustomobject]@{Check="Malicious Module"; Finding="$($h.FullName)"; Severity="CRITICAL"}
        }
    }
}

# --- 4. Persistence artifacts referencing suspicious DLLs ---
$runKeys = @("HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run","HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run")
foreach ($k in $runKeys) {
    if (Test-Path $k) {
        (Get-ItemProperty $k).PSObject.Properties | Where-Object { $_.Value -match "GoogleService|CommunicationUxTheme|rundll32.*AppData|ProgramData" } | ForEach-Object {
            $report += [pscustomobject]@{Check="Run Key Persistence"; Finding="$k :: $($_.Name) = $($_.Value)"; Severity="HIGH"}
        }
    }
}
Get-ScheduledTask -ErrorAction SilentlyContinue | Where-Object { ($_.Actions.Execute + $_.Actions.Arguments) -match "GoogleService|CommunicationUxTheme|rundll32" } | ForEach-Object {
    $report += [pscustomobject]@{Check="Scheduled Task"; Finding="$($_.TaskName) :: $($_.Actions.Execute) $($_.Actions.Arguments)"; Severity="HIGH"}
}

# --- 5. Webshell artifacts in web roots (Vshell/Gshell/TencShell) ---
$webRoots = @("C:\inetpub\wwwroot","C:\xampp\htdocs")
$shellPatterns = "eval\(|System\(\)|passthru|shell_exec|FromBase64String|IEX|Invoke-Expression"
foreach ($root in $webRoots) {
    if (Test-Path $root) {
        Get-ChildItem -Path $root -Recurse -Include *.aspx,*.asp,*.php,*.jsp,*.ashx -ErrorAction SilentlyContinue | ForEach-Object {
            if ((Get-Content $_.FullName -Raw -ErrorAction SilentlyContinue) -match $shellPatterns) {
                $report += [pscustomobject]@{Check="Webshell Pattern"; Finding="$($_.FullName)"; Severity="CRITICAL"}
            }
        }
    }
}

if ($report.Count -eq 0) { Write-Output "[CLEAN] No CAV3RN/TencShell indicators found on $env:COMPUTERNAME" }
else { $report | Sort-Object Severity | Format-Table -AutoSize; $report | Export-Csv -Path "C:\ioc-hunt-$env:COMPUTERNAME-$(Get-Date -Format 'yyyyMMdd-HHmm').csv" -NoTypeInformation }

Response Priorities

Immediate (0–4 hours)

  • Block studiotikva.com and all associated hostnames (api., ns1., ns2.) plus IPs 12.19.29.30 and 12.121.234.120 at DNS sinkhole, proxy, and egress firewall layers.
  • Push all 10 file hashes from Pulse 1 to EDR blocklists and email/web gateway retro-scans.
  • Execute the KQL hunt and PowerShell script against internet-facing web servers and any endpoints in government/finance/telecom/semiconductor business units.
  • Do not block Google Apps Script domains globally — instead alert on non-browser processes connecting to them (Sigma rule 2).

24 Hours

  • Both campaigns involve credential exposure: cloned login pages (Pulse 1) and espionage collection (Pulse 2). Force password resets and revoke sessions for any user on a device with a confirmed hit, plus any accounts that authenticated from or to affected hosts.
  • Audit MFA enrollment and conditional-access logs for the past 30 days for anomalous sign-ins from Hong Kong ASNs.
  • Review outbound traffic to script.google.com/script.googleusercontent.com enterprise-wide; baseline which processes legitimately use Apps Script automation and allowlist explicitly.
  • If webshell artifacts are found on any web server, treat the host as fully compromised: isolate, image, and rebuild — do not attempt in-place cleanup.

1 Week

  • Egress architecture hardening: implement TLS-ingress categorization policies that restrict SaaS webhook/relay services (Apps Script, Lambda URLs, Cloudflare Workers) to approved service accounts only.
  • Deploy DNS analytics (Zeek or your DNS firewall) to detect A-record-driven channel negotiation and per-transaction domain rotation — CAV3RN's core evasion.
  • Audit internet-facing applications for webshell exposure; enforce WAF rules against script upload and command-execution patterns.
  • Brief threat intel and red teams on LLM-assisted intrusion TTPs — update threat models to account for accelerated exploit development cycles and automate detection-content refresh accordingly.
  • Subscribe to the OTX pulses directly via API so these indicators auto-flow into your SIEM/TIP pipeline.

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.