Back to Intelligence

Project CAV3RN Espionage Framework: Google Apps Script C2 + DNS Channel Rotation Targeting Israel — OTX Detection Pack

SA
Security Arsenal Team
August 14, 2026
9 min read

OTX pulse data confirms the continued evolution of Project CAV3RN, a modular espionage framework conducting targeted operations against entities in Israel. First documented by Kaspersky's Securelist and now tracked by AlienVault, CAV3RN represents a mature, professionally engineered intrusion set rather than commodity crimeware. Attribution remains unknown, but the targeting profile, modular architecture, and abuse of legitimate cloud infrastructure are consistent with state-aligned espionage tradecraft.

The defining characteristic of the current campaign wave is its dynamic C2 channel selection: the implant's communication module issues DNS queries and parses A-record responses to decide, per transaction, whether to communicate over direct HTTPS or route through a Google Apps Script relay. This gives operators two powerful advantages — they can rotate communication channels on the fly without redeploying implants, and they can shift traffic onto Google-owned infrastructure (script.google.com / googleusercontent.com), which most enterprise proxies and egress filters implicitly trust. Deployment identifiers are also rotated, hampering infrastructure-based clustering by defenders.

The framework's objective is classic espionage: persistent, low-noise access to targeted Israeli organizations with modular tasking capability. The five named modules — GoogleService.dll, CommunicationUxTheme.dll, net.dll, rnp.dll, and texture.dll — indicate a loader/communication/payload separation of concerns, allowing operators to hot-swap capabilities per victim.

Urgency: HIGH for organizations operating in or connected to Israel; MEDIUM for global enterprises as a detection-engineering exercise in trusted-cloud C2 abuse.

Threat Actor / Malware Profile

Adversary: Unattributed. TLP:WHITE pulse published by AlienVault. TTP overlap with known Middle East espionage clusters is under community analysis.

Malware Family: Project CAV3RN — modular espionage framework.

Module breakdown:

  • GoogleService.dll — masquerades as a legitimate Google service component; likely the loader or primary orchestration module, thematically aligned with the Google Apps Script C2 channel to blend into process listings.
  • CommunicationUxTheme.dll — the C2 communication module; implements DNS-based channel selection and the dual HTTPS / Apps Script relay logic. Its name spoofs Windows UX theme libraries.
  • net.dll — network operations module; DNS query construction, A-record parsing, HTTPS transaction handling.
  • rnp.dll — likely the encryption/encoding module (RNP naming suggests OpenPGP-style or custom crypto for tasking payloads).
  • texture.dll — masquerades as a graphics/asset library; probable payload staging or data-handling module.

Distribution method: Targeted delivery consistent with spear-phishing or supply-chain-adjacent intrusion against Israeli entities; initial access vector has not been fully disclosed.

C2 communication:

  1. Implant issues DNS queries to attacker-controlled authoritative nameservers (ns1.studiotikva.com / ns2.studiotikva.com).
  2. The returned A-record value itself encodes an instruction — selecting direct HTTPS C2 vs. Google Apps Script relay, and carrying deployment identifiers.
  3. Direct channel: HTTPS to api.studiotikva.com endpoints (/api/v1/update/check, /ac) mimicking software update traffic.
  4. Relay channel: transactions proxied through Google Apps Script web apps, placing the effective C2 on Google IP space.

Persistence & anti-analysis: Modular DLL side-loading patterns consistent with legitimate-looking service DLLs; cloud-relay fallback defeats IP/domain blocklisting; per-transaction channel rotation defeats single-channel beacon detection; legitimate-update URL taxonomy (/api/v1/update/check) defeats shallow URL inspection.

MITRE ATT&CK mapping: T1071.001 (Web Protocols), T1071.004 (DNS), T1102.002 (Bidirectional Communication via Web Service), T1573 (Encrypted Channel), T1036.005 (Match Legitimate Name or Location), T1574.002 (DLL Side-Loading), T1027 (Obfuscated Files or Information).

IOC Analysis

The pulse contains 28 indicators spanning four types:

  • IPv4 (2): 12.19.29.30, 12.121.234.120 — C2 and/or DNS resolver infrastructure. Operationalize as egress block entries and retro-hunt against firewall, proxy, and NetFlow telemetry for the last 90 days.
  • Domains (1): studiotikva.com — attacker-registered C2 apex. Block at DNS layer (RPZ / protective DNS) and sinkhole where possible.
  • Hostnames (3): api.studiotikva.com, ns1.studiotikva.com, ns2.studiotikva.com — the C2 API front and the authoritative nameservers powering the DNS channel-selection mechanism. Critical: the ns1/ns2 hostnames mean any internal host resolving *.studiotikva.com through these nameservers is likely implanted — hunt for DNS query logs, not just connection logs.
  • URLs (2): https://api.studiotikva.com/api/v1/update/check, https://api.studiotikva.com/ac — tasking endpoints disguised as update checks. Proxy and TLS-inspection retro-hunt targets.

Operationalization guidance: Load indicators into your TIP with high confidence scoring and a 90-day lookback. Because CAV3RN can fall back to Google Apps Script relay, do not assume blocking the listed infrastructure severs C2 — also hunt for anomalous or sustained egress to script.google.com / script.googleusercontent.com from non-developer workstations. Tooling: SIEM retro-hunt (Sentinel/Splunk), Zeek/Suricata for DNS anomaly detection, EDR for module-name hunting (GoogleService.dll, CommunicationUxTheme.dll, texture.dll).

Detection Engineering

YAML
---
title: Project CAV3RN - DNS Query to Attacker Nameserver Infrastructure
id: 7f3a1c2e-9b4d-4e1a-a5c6-cav3rn000001
status: experimental
description: Detects DNS resolution of studiotikva.com infrastructure used by Project CAV3RN for channel selection and C2. A-record responses from these nameservers drive the implant's HTTPS vs Google Apps Script relay decision.
author: Security Arsenal Threat Intelligence
references:
  - https://securelist.com/project-cav3rn-continues/120991/
date: 2026/08/15
modified: 2026/08/15
tags:
  - attack.command_and_control
  - attack.t1071.004
logsource:
  category: dns
product: windows
detection:
  selection:
    query|contains:
      - 'studiotikva.com'
      - 'api.studiotikva.com'
      - 'ns1.studiotikva.com'
      - 'ns2.studiotikva.com'
  condition: selection
falsepositives:
  - Threat research and sandbox detonation
level: high
---
title: Project CAV3RN - Suspicious Module Names Masquerading as System or Google DLLs
id: 7f3a1c2e-9b4d-4e1a-a5c6-cav3rn000002
status: experimental
description: Detects load or image events for CAV3RN framework modules (GoogleService.dll, CommunicationUxTheme.dll, net.dll, rnp.dll, texture.dll) which masquerade as legitimate Windows or Google components.
author: Security Arsenal Threat Intelligence
references:
  - https://securelist.com/project-cav3rn-continues/120991/
date: 2026/08/15
modified: 2026/08/15
tags:
  - attack.defense_evasion
  - attack.t1036.005
  - attack.t1574.002
logsource:
  category: image_load
  product: windows
detection:
  selection:
    ImageLoaded|endswith:
      - '\GoogleService.dll'
      - '\CommunicationUxTheme.dll'
      - '\texture.dll'
      - '\rnp.dll'
  filter_legit_paths:
    ImageLoaded|startswith:
      - 'C:\Program Files\Google\'
      - 'C:\Program Files (x86)\Google\'
  condition: selection and not 1 of filter_legit_paths*
falsepositives:
  - Legitimate Google software loading GoogleService.dll from sanctioned install paths
level: high
---
title: Project CAV3RN - Anomalous Egress to Google Apps Script from Non-Browser Processes
id: 7f3a1c2e-9b4d-4e1a-a5c6-cav3rn000003
status: experimental
description: Detects network connections to Google Apps Script endpoints from processes other than browsers, consistent with CAV3RN's Apps Script C2 relay channel.
author: Security Arsenal Threat Intelligence
references:
  - https://securelist.com/project-cav3rn-continues/120991/
date: 2026/08/15
modified: 2026/08/15
tags:
  - attack.command_and_control
  - attack.t1102.002
  - attack.t1071.001
logsource:
  category: network_connection
  product: windows
detection:
  selection:
    DestinationHostname|contains:
      - 'script.google.com'
      - 'script.googleusercontent.com'
  filter_browsers:
    Image|endswith:
      - '\chrome.exe'
      - '\msedge.exe'
      - '\firefox.exe'
      - '\brave.exe'
      - '\opera.exe'
  condition: selection and not filter_browsers
falsepositives:
  - Developer tooling, CI/CD pipelines, or IT automation legitimately calling Apps Script web apps
level: medium
KQL — Microsoft Sentinel / Defender
// Project CAV3RN hunt: C2 infrastructure, module loads, and Apps Script relay abuse
// Microsoft Sentinel / Defender XDR — run with 90-day lookback
let cav3rn_iocs = dynamic(["studiotikva.com","api.studiotikva.com","ns1.studiotikva.com","ns2.studiotikva.com","12.19.29.30","12.121.234.120"]);
let cav3rn_modules = dynamic(["GoogleService.dll","CommunicationUxTheme.dll","net.dll","rnp.dll","texture.dll"]);
let browsers = dynamic(["chrome.exe","msedge.exe","firefox.exe","brave.exe","opera.exe"]);
union isfuzzy=true
    (DeviceNetworkEvents
    | where Timestamp > ago(90d)
    | where RemoteUrl has_any (cav3rn_iocs) or RemoteIP in (cav3rn_iocs)
    | project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteIP, RemoteUrl, ActionType),
    (DeviceNetworkEvents
    | where Timestamp > ago(90d)
    | where RemoteUrl has_any ("script.google.com","script.googleusercontent.com")
    | where not(InitiatingProcessFileName in~ (browsers))
    | project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteIP, RemoteUrl, ActionType),
    (DeviceImageLoadEvents
    | where Timestamp > ago(90d)
    | where FileName has_any (cav3rn_modules)
    | where not(FolderPath startswith @"C:\Program Files\Google\" or FolderPath startswith @"C:\Program Files (x86)\Google\")
    | project Timestamp, DeviceName, InitiatingProcessFileName, FileName, FolderPath, SHA256),
    (DeviceEvents
    | where Timestamp > ago(90d)
    | where ActionType == "DnsQueryResponse" and AdditionalInfo has_any (cav3rn_iocs)
    | project Timestamp, DeviceName, ActionType, AdditionalInfo)
| sort by Timestamp desc
PowerShell
# Project CAV3RN IOC Hunt Script - Security Arsenal
# Checks for CAV3RN module artifacts, suspicious network connections, and DNS cache evidence
# Run elevated on suspected endpoints; output to console and CSV

$report = @()

Write-Host "[*] Hunting for CAV3RN module files..." -ForegroundColor Cyan
$modules = @("GoogleService.dll","CommunicationUxTheme.dll","texture.dll","rnp.dll")
$searchPaths = @("$env:ProgramFiles","${env:ProgramFiles(x86)}","$env:ProgramData","$env:APPDATA","$env:LOCALAPPDATA","$env:TEMP")
foreach ($path in $searchPaths) {
    if (Test-Path $path) {
        Get-ChildItem -Path $path -Recurse -Include $modules -ErrorAction SilentlyContinue |
        Where-Object { $_.FullName -notmatch "Program Files(\\| \(x86\)\\)Google" } |
        ForEach-Object {
            $hash = (Get-FileHash $_.FullName -Algorithm SHA256 -ErrorAction SilentlyContinue).Hash
            $report += [PSCustomObject]@{Type="File"; Indicator=$_.FullName; Detail=$hash; Time=$_.LastWriteTime}
        }
    }
}

Write-Host "[*] Checking active and recent network connections to CAV3RN infrastructure..." -ForegroundColor Cyan
$c2ips = @("12.19.29.30","12.121.234.120")
Get-NetTCPConnection -ErrorAction SilentlyContinue | Where-Object { $c2ips -contains $_.RemoteAddress } | ForEach-Object {
    $proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
    $report += [PSCustomObject]@{Type="Network"; Indicator=$_.RemoteAddress; Detail="$($proc.ProcessName) [$($proc.Path)] State=$($_.State)"; Time=Get-Date}
}

Write-Host "[*] Inspecting DNS client cache for studiotikva.com resolution..." -ForegroundColor Cyan
Get-DnsClientCache -ErrorAction SilentlyContinue | Where-Object { $_.Entry -match "studiotikva\.com" } | ForEach-Object {
    $report += [PSCustomObject]@{Type="DNSCache"; Indicator=$_.Entry; Detail="$($_.Data) Type=$($_.Type)"; Time=Get-Date}
}

Write-Host "[*] Checking loaded DLLs in running processes for CAV3RN modules..." -ForegroundColor Cyan
Get-Process | ForEach-Object {
    try {
        $_.Modules | Where-Object { $modules -contains $_.ModuleName } | ForEach-Object {
            $report += [PSCustomObject]@{Type="LoadedModule"; Indicator=$_.FileName; Detail="Process: $($_.ModuleName)"; Time=Get-Date}
        }
    } catch {}
}

Write-Host "[*] Reviewing scheduled tasks for suspicious persistence referencing DLL execution..." -ForegroundColor Cyan
Get-ScheduledTask | ForEach-Object {
    $task = $_
    $task.Actions | Where-Object { $_.Execute -match "rundll32|regsvr32" -or $_.Arguments -match ($modules -join "|") } | ForEach-Object {
        $report += [PSCustomObject]@{Type="ScheduledTask"; Indicator=$task.TaskName; Detail="$($_.Execute) $($_.Arguments)"; Time=Get-Date}
    }
}

Write-Host "[*] Checking Run keys for DLL-based persistence..." -ForegroundColor Cyan
$runKeys = @("HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run","HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run","HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce","HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce")
foreach ($key in $runKeys) {
    if (Test-Path $key) {
        Get-ItemProperty $key | Get-Member -MemberType NoteProperty | ForEach-Object {
            $val = (Get-ItemProperty $key).$($_.Name)
            if ($val -match "rundll32|regsvr32|\.dll") {
                $report += [PSCustomObject]@{Type="RunKey"; Indicator="$key\$($_.Name)"; Detail=$val; Time=Get-Date}
            }
        }
    }
}

if ($report.Count -gt 0) {
    $report | Format-Table -AutoSize
    $report | Export-Csv -Path "CAV3RN_Hunt_$(Get-Date -Format 'yyyyMMdd_HHmmss').csv" -NoTypeInformation
    Write-Host "[ALERT] $($report.Count) potential CAV3RN artifacts found. Results exported to CSV." -ForegroundColor Red
} else {
    Write-Host "[OK] No CAV3RN indicators found on this host." -ForegroundColor Green
}

Response Priorities

Immediate (0–4 hours):

  • Block studiotikva.com and all subdomains at DNS/protective-DNS (RPZ) and proxy layers; block 12.19.29.30 and 12.121.234.120 at egress firewalls.
  • Deploy the Sigma and KQL detections above; run the PowerShell hunt script on high-value endpoints, prioritizing systems with Israel-region business context.
  • Retro-hunt 90 days of DNS logs for any resolution of *.studiotikva.com — remember the A-record itself is the instruction channel, so a single resolved query may indicate an implant check-in.

24 hours:

  • Hunt for anomalous non-browser egress to script.google.com / script.googleusercontent.com; establish a baseline of legitimate Apps Script usage (developers, automation) and alert on the remainder.
  • If any implant activity is confirmed, treat as a full espionage incident: assume credential and data access, force enterprise-wide credential resets for affected users (espionage frameworks harvest tokens and cached credentials for lateral movement), and isolate affected hosts for forensic imaging rather than wiping.
  • Review TLS inspection logs for the /api/v1/update/check and /ac URL patterns against any host, in case infrastructure has rotated.

1 week:

  • Architecturally restrict egress: implement default-deny outbound policies for servers and restrict workstation egress to categorized destinations; Google Apps Script relay abuse is only effective because trusted-cloud egress is broadly permitted.
  • Deploy application allowlisting to prevent unsigned DLL side-loading (WDAC or AppLocker), targeting the masquerade-module technique.
  • Deploy DNS analytics (NXDOMAIN ratio, rare TLD/first-seen domain alerting, query-per-host baselines) to catch instruction-encoded A-record channels generically, not just this campaign.
  • Brief threat-hunt teams on trusted-cloud C2 tradecraft (T1102.002) as a standing hunt hypothesis.

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.