Back to Intelligence

Project CAV3RN Espionage Framework: DNS-Driven C2 via Google Apps Script — OTX Pulse Detection Pack

SA
Security Arsenal Team
August 11, 2026
9 min read

Threat Summary

AlienVault OTX pulse data, corroborated by Securelist research, details Project CAV3RN — a sophisticated, modular espionage framework actively targeting entities in Israel. The campaign represents a mature intrusion set with a clear intelligence-collection objective rather than financial motivation. The modular architecture — comprising staged components named GoogleService.dll, CommunicationUxTheme.dll, net.dll, rnp.dll, and texture.dll — is deliberately engineered to masquerade as legitimate system and application libraries, complicating static detection and casual triage.

The defining innovation in this activity cluster is the transaction-level C2 channel selection logic. Rather than hardcoding a single C2 path, the implant resolves attacker-controlled DNS records and interprets DNS A-record responses as decision data, dynamically choosing between direct HTTPS communication with attacker infrastructure and a Google Apps Script relay for each individual transaction. The DNS infrastructure is additionally used to validate and rotate Google Apps Script deployment IDs, meaning the adversary can burn and replace relay endpoints without redeploying the implant. A local broker component orchestrates this channel negotiation, effectively turning abused Google cloud functionality into a resilient, high-reputation C2 proxy layer.

This is espionage tradecraft: low-and-slow communication blending into legitimate Google traffic, geographic targeting precision, and infrastructure compartmentalization. Organizations with Israeli operations, business relationships, or supply-chain exposure should treat this as an active, targeted threat.

Threat Actor / Malware Profile

Adversary attribution: Unknown. No public attribution has been established; the targeting profile (Israel, espionage tooling, infrastructure discipline) is consistent with a state-aligned or state-tolerated intrusion set.

Malware profile — Project CAV3RN modular framework:

  • Distribution method: Not fully detailed in the pulse; the modular staged loader design suggests delivery via targeted phishing or exploitation of an initial-access foothold, followed by component-by-component staging to minimize payload exposure.
  • Payload behavior: Modular DLL architecture. GoogleService.dll handles the Google Apps Script relay channel; net.dll and CommunicationUxTheme.dll manage network transport and communication logic; rnp.dll and texture.dll provide auxiliary framework functions. Innocuous filenames (texture.dll, GoogleService.dll) are chosen to evade analyst attention during filesystem review.
  • C2 communication: Dual-channel. The implant queries attacker DNS infrastructure (authoritative nameservers ns1.studiotikva.com / ns2.studiotikva.com) and parses A-record response values as control data to select between (a) direct HTTPS to api.studiotikva.com (e.g., /api/v1/update/check, /ac) and (b) relayed traffic through Google Apps Script web app endpoints. DNS responses also validate and rotate Apps Script deployment IDs, giving the adversary hot-swappable C2 without implant updates.
  • Persistence mechanism: Not enumerated in the pulse. Hunting should cover DLL search-order hijacking, registry Run keys, and scheduled tasks given the DLL-centric design.
  • Anti-analysis techniques: Legitimate-sounding module names; living-off-trusted-services C2 (Google Apps Script inherits Google's TLS reputation and IP space); per-transaction channel randomization defeats single-channel traffic baselining; DNS-based indirection keeps true C2 logic out of static configuration.

IOC Analysis

The pulse contains 18 indicators across four types:

  • IPv4 (12.19.29.30, 12.121.234.120): Adversary infrastructure associated with C2/DNS resolution. Operationalize via egress firewall and proxy blocklists; alert on any historical connection in netflow/Zeek/Suricata data.
  • Domain (studiotikva.com): Root C2 domain. Block at DNS resolver and secure web gateway. Because the adversary runs authoritative nameservers for this domain, the DNS control channel collapses if resolution is sinkholed.
  • Hostnames (api.studiotikva.com, ns1/ns2.studiotikva.com): The api. host serves HTTPS C2 endpoints; the ns1/ns2 hosts are the decision-channel nameservers. Hunt DNS query logs for any resolution of *.studiotikva.com — internal hosts querying attacker nameservers directly is a high-fidelity signal of compromise.
  • URLs (https://api.studiotikva.com/api/v1/update/check, https://api.studiotikva.com/ac): Concrete C2 URI patterns. The /api/v1/update/check path mimics software-update telemetry — add URL-pattern detections in proxy logs even where full domain blocking is in place.

Tooling for operationalization:

  • DNS layer: Pi-hole/Infoblox/RPZ sinkhole for studiotikva.com; passive DNS (SecurityTrails, PassiveTotal) to enumerate sibling infrastructure sharing the nameservers.
  • Network: Suricata/Zeek for HTTP URI matching; netflow retro-hunt against the two IPs.
  • Endpoint: Sysmon Event ID 22 (DNS query) and EDR telemetry for processes resolving studiotikva.com or loading the named DLLs from non-standard paths.
  • Google Apps Script visibility: Because relay traffic egresses to script.google.com / script.googleusercontent.com, proxy TLS inspection or JA3/JA4 fingerprinting is required to distinguish implant relay traffic from legitimate Apps Script usage.

Detection Engineering

YAML
---
title: Project CAV3RN C2 DNS or HTTPS Communication to studiotikva Infrastructure
description: Detects DNS resolution or HTTPS requests to known Project CAV3RN C2 infrastructure, including the attacker-controlled nameservers used for DNS A-record based channel selection.
logsource:
  category: dns
product: windows
author: Security Arsenal Threat Intelligence
date: 2026/08/12
status: experimental
references:
  - https://securelist.com/project-cav3rn-continues/120991
detection:
  selection:
    query|contains:
      - 'studiotikva.com'
  condition: selection
falsepositives:
  - Unlikely; domain is adversary-registered infrastructure
level: critical
tags:
  - attack.command_and_control
  - attack.t1071.001
  - attack.t1071.004
---
title: Project CAV3RN Suspicious DLL Module Load from Non-Standard Path
description: Detects loading of Project CAV3RN framework modules (GoogleService.dll, CommunicationUxTheme.dll, net.dll, rnp.dll, texture.dll) from outside legitimate system or application directories. Filename masquerading is a core evasion trait of this framework.
logsource:
  category: image_load
  product: windows
author: Security Arsenal Threat Intelligence
date: 2026/08/12
status: experimental
references:
  - https://securelist.com/project-cav3rn-continues/120991
detection:
  selection_dll:
    ImageLoaded|endswith:
      - '\GoogleService.dll'
      - '\CommunicationUxTheme.dll'
      - '\net.dll'
      - '\rnp.dll'
      - '\texture.dll'
  filter_legit:
    ImageLoaded|startswith:
      - 'C:\Windows\System32\'
      - 'C:\Windows\SysWOW64\'
      - 'C:\Program Files\'
      - 'C:\Program Files (x86)\'
  condition: selection_dll and not filter_legit
falsepositives:
  - Third-party applications shipping similarly named libraries; verify signer and hash
level: high
tags:
  - attack.defense_evasion
  - attack.t1574.002
  - attack.t1036
---
title: Project CAV3RN Google Apps Script C2 Relay Usage
description: Detects network connections to Google Apps Script web app endpoints by processes that do not normally use Google Workspace scripting, consistent with Project CAV3RN relay-channel behavior.
logsource:
  category: network_connection
  product: windows
author: Security Arsenal Threat Intelligence
date: 2026/08/12
status: experimental
references:
  - https://securelist.com/project-cav3rn-continues/120991
detection:
  selection:
    DestinationHostname|contains:
      - 'script.google.com'
      - 'script.googleusercontent.com'
  filter_browsers:
    Image|endswith:
      - '\chrome.exe'
      - '\msedge.exe'
      - '\firefox.exe'
      - '\iexplore.exe'
      - '\brave.exe'
  condition: selection and not filter_browsers
falsepositives:
  - Enterprise Google Workspace automation, Apps Script CLI tooling, RMM platforms
level: medium
tags:
  - attack.command_and_control
  - attack.t1102
  - attack.t1090
KQL — Microsoft Sentinel / Defender
// Project CAV3RN hunt: C2 infrastructure, suspicious module loads, and Apps Script relay behavior
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 lookback = 14d;
let NetworkHits = DeviceNetworkEvents
    | where TimeGenerated > ago(lookback)
    | where RemoteUrl has_any (cav3rn_iocs) or RemoteIP in (cav3rn_iocs)
    | project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteUrl, RemoteIP, RemotePort
    | extend Signal = "C2 Network Connection";
let ModuleLoads = DeviceImageLoadEvents
    | where TimeGenerated > ago(lookback)
    | where FileName has_any (cav3rn_modules)
    | where FolderPath !startswith "C:\\Windows\\System32" and FolderPath !startswith "C:\\Windows\\SysWOW64"
    | project TimeGenerated, DeviceName, InitiatingProcessFileName, FileName, FolderPath, SHA256
    | extend Signal = "Suspicious CAV3RN Module Load";
let AppsScriptRelay = DeviceNetworkEvents
    | where TimeGenerated > ago(lookback)
    | where RemoteUrl has_any ("script.google.com", "script.googleusercontent.com")
    | where InitiatingProcessFileName !in~ ("chrome.exe", "msedge.exe", "firefox.exe", "iexplore.exe", "brave.exe")
    | project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteUrl
    | extend Signal = "Non-Browser Apps Script Traffic";
union NetworkHits, ModuleLoads, AppsScriptRelay
| sort by TimeGenerated desc
PowerShell
# Project CAV3RN IOC hunt script - run on suspected endpoints
# Checks: C2 DNS resolution cache, named DLL artifacts, network connections, persistence

$ErrorActionPreference = 'SilentlyContinue'
$Cav3rnDomains = @('studiotikva.com')
$Cav3rnIPs     = @('12.19.29.30', '12.121.234.120')
$Cav3rnDLLs    = @('GoogleService.dll','CommunicationUxTheme.dll','net.dll','rnp.dll','texture.dll')

Write-Host "=== [1] DNS Cache check for CAV3RN C2 domains ===" -ForegroundColor Cyan
Get-DnsClientCache | Where-Object { $_.Entry -match ($Cav3rnDomains -join '|') } |
    Format-Table Entry, Data, Status -AutoSize

Write-Host "=== [2] Active / recent network connections to CAV3RN IPs ===" -ForegroundColor Cyan
Get-NetTCPConnection | Where-Object { $Cav3rnIPs -contains $_.RemoteAddress } |
    Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State, OwningProcess,
        @{N='Process';E={(Get-Process -Id $_.OwningProcess).ProcessName}} | Format-Table -AutoSize

Write-Host "=== [3] Filesystem sweep for CAV3RN module DLLs (non-standard paths) ===" -ForegroundColor Cyan
$searchRoots = @("$env:APPDATA","$env:LOCALAPPDATA","$env:ProgramData","$env:TEMP","C:\Users\Public")
foreach ($root in $searchRoots) {
    Get-ChildItem -Path $root -Recurse -Include $Cav3rnDLLs -Force -ErrorAction SilentlyContinue |
        Select-Object FullName, Length, LastWriteTime,
            @{N='Signer';E={($_ | Get-AuthenticodeSignature).SignerCertificate.Subject}} |
        Format-List
}

Write-Host "=== [4] Persistence: Run keys and scheduled tasks referencing CAV3RN modules ===" -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) {
    Get-ItemProperty -Path $key | ForEach-Object {
        $_.PSObject.Properties | Where-Object { $_.Value -match 'rundll32|regsvr32|GoogleService|texture\.dll|rnp\.dll' } |
            Select-Object @{N='Key';E={$key}}, Name, Value
    }
}
Get-ScheduledTask | Where-Object {
    ($_.Actions.Execute -match 'rundll32|regsvr32') -or
    ($_.Actions.Arguments -match 'GoogleService|texture\.dll|rnp\.dll|CommunicationUxTheme')
} | Select-Object TaskName, TaskPath, @{N='Action';E={$_.Actions.Execute}}, @{N='Args';E={$_.Actions.Arguments}} | Format-List

Write-Host "=== [5] Proxy/WPAD traffic to Google Apps Script relay endpoints ===" -ForegroundColor Cyan
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Sysmon/Operational'; Id=3} -MaxEvents 5000 |
    Where-Object { $_.Message -match 'script\.google(com|usercontent\.com)' } |
    Select-Object TimeCreated, Message -First 25 | Format-List

Write-Host "Hunt complete. Escalate any hits from sections 1-4 to IR immediately." -ForegroundColor Yellow

Response Priorities

Immediate (0-4 hours):

  • Sinkhole/block studiotikva.com and all subdomains at DNS resolvers and secure web gateways; block 12.19.29.30 and 12.121.234.120 at egress firewalls.
  • Retro-hunt DNS query logs, proxy logs, and netflow for the past 30 days against all pulse IOCs — any hit indicates a probable implant presence.
  • Deploy the Sigma module-load rule environment-wide; the masqueraded DLL names are the highest-fidelity endpoint signal available.
  • Alert on non-browser processes communicating with script.google.com / script.googleusercontent.com.

24 hours:

  • For any host with confirmed IOC contact: isolate, acquire memory and disk images, and enumerate staged DLL artifacts before remediation — the modular design means partial cleanup leaves functional implants.
  • Treat any compromised host as fully exposed: force credential resets for all interactive and service accounts used on the machine, revoke sessions/tokens, and review authentication logs for lateral movement. Espionage frameworks routinely harvest cached credentials to expand access.
  • Review Google Workspace audit logs if the organization uses Apps Script internally, to distinguish legitimate relay-like traffic from implant communication.

1 week:

  • Harden egress policy: restrict which processes and hosts may reach Google Apps Script endpoints; implement TLS inspection or JA3/JA4 fingerprinting on cloud-productivity traffic where feasible.
  • Deploy DNS analytics alerting on hosts querying external authoritative nameservers directly (bypassing internal resolvers) — this breaks the CAV3RN decision channel even if the domain changes.
  • Audit application allowlisting to block unsigned DLL loads from user-writable directories, neutralizing the framework's staging model.
  • For organizations with Israeli nexus: brief threat exposure to leadership and validate that incident response retainers and legal/comms escalation paths are current.

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.