Back to Intelligence

Hotejka (ROI777) Help TDS Tech Support Scam Infrastructure: UltraViewer Social Engineering Campaign — OTX Pulse Analysis

SA
Security Arsenal Team
November 8, 2026
10 min read

This AlienVault OTX pulse documents infrastructure and tradecraft attributed to Hotejka, a Russian-language affiliate Traffic Distribution System (TDS) operation assessed by Infoblox as a rebrand of ROI777, an operation originally exposed in 2018. Active since at least April 2017, the Help TDS orchestrates large-scale tech support scam campaigns targeting victims in the United States, Australia, Belgium, Canada, France, Japan, and Sweden.

The campaign chain relies on traffic redirection through TDS infrastructure hosted or fronted via Cloudflare Pages, presenting victims with convincing fake browser-lock or virus-alert pages. These pages instruct users to call a fraudulent support number, where social engineering at criminal call centers persuades victims to install UltraViewer — a legitimate remote desktop application — granting operators persistent remote access for financial fraud, credential harvesting, and follow-on malware delivery.

The objective is financially motivated: the affiliate program monetizes victim funneling through scam call centers, where remote access enables direct theft, fake subscription billing, and in some cases installation of additional payloads. The rebrand from ROI777 to Hotejka indicates deliberate obfuscation of operator identity to evade prior public attribution, while continued use of overlapping infrastructure (e.g., roi777.com) provides detection opportunities.

Threat Actor / Malware Profile

Actor: Hotejka (assessed ROI777 rebrand) Tooling: UltraViewer (legitimate RMM abused as RAT), Help TDS redirector, Cloudflare Pages hosting, Balada Injector (per pulse tags, likely used for malicious script injection into compromised or redirector pages), Detour Dog (traffic routing component referenced in community tagging).

Distribution method: Malvertising chains, compromised websites, and injected scripts redirect browsers into the Help TDS. The TDS fingerprints the visitor (geo, user agent, referrer) and conditionally serves tech support scam landing pages hosted on Cloudflare Pages, mimicking Microsoft/Apple security alerts with audio loops and fake BSOD overlays.

Payload behavior: The scam page itself is browser-based social engineering — no exploit is required. The payload is delivered through human interaction: victims call the displayed number, and operators walk them through downloading and installing UltraViewer. Once installed, the scammer obtains the victim's UltraViewer ID and password (displayed in the client UI), establishing a remote session.

C2 communication: UltraViewer communicates with UltraViewer's legitimate relay infrastructure over TCP (default ports 2112 and associated relay ports) using its own proprietary protocol. From a defender's perspective, this appears as outbound connections from UltraViewer_Desktop.exe / UltraViewer_Service.exe to UltraViewer-operated servers. The scam infrastructure itself (TDS domains) communicates over HTTPS, frequently behind Cloudflare, complicating passive DNS attribution.

Persistence mechanism: UltraViewer installs as a Windows service (UltraViewer service) and can configure autostart, providing persistent remote access even after reboot. Scammers may additionally create local accounts, disable Windows Defender via the remote session, or install secondary tools (AnyDesk, TeamViewer) as redundant access paths.

Anti-analysis techniques: Conditional TDS redirection (only serving scam pages to residential IPs matching target geo/device profiles), Cloudflare fronting to mask origin infrastructure, frequent domain rotation across cheap TLDs (.icu, .shop, .lol, .ink, .help, .biz), and rebranding of the affiliate program identity (ROI777 → Hotejka) to break historical attribution chains.

IOC Analysis

The pulse contains 15 indicators, all of type domain. Sample indicators include:

  • roi777.com — legacy ROI777 infrastructure; continued resolution suggests incomplete takedown or intentional legacy linkage
  • roi-traffic.icu — ROI-branded TDS traffic routing
  • hotejka.ink, hotejka.com, hotcname.help — current Hotejka affiliate branding and CNAME-based rotation infrastructure
  • lib1.biz — generic-sounding redirect/library loader domain
  • fosetya.shop, goalods.lol — disposable cheap-TLD landing/redirect nodes typical of TDS rotation

Operationalization guidance for SOC teams:

  1. DNS/Sinkhole: Add all 15 domains to DNS blocklists (RPZ) and secure web gateway categories. Because TDS operators rotate domains rapidly, treat these as point-in-time indicators and pivot on nameserver and registration patterns.
  2. Passive DNS hunting: Query internal DNS logs for historical resolutions of these domains over the past 90 days — any hit indicates a browser reached the TDS and may have been served scam content.
  3. Proxy/Zeek logs: Hunt for HTTP(S) requests to these domains, particularly where referrer chains show malvertising networks or compromised CMS sites.
  4. Pivoting: Use passive DNS tooling (VirusTotal, PassiveTotal, SecurityTrails, Infoblox Dossier) to enumerate co-hosted domains on shared nameservers/IPs — Hotejka infrastructure clusters predictably.
  5. Endpoint artifact hunting: The strongest detection signal is not the domains but the presence of UltraViewer on endpoints where it is not an approved RMM tool. Inventory installed software against an approved RMM allowlist.

Detection Engineering

YAML
---
title: UltraViewer Remote Access Tool Execution - Tech Support Scam TTP
id: 7f3a1b2e-9c4d-4e5a-8b6f-hotejka0001
description: Detects execution of UltraViewer remote desktop software, commonly installed via tech support scam social engineering attributed to the Hotejka/ROI777 Help TDS campaign. UltraViewer is legitimate software but is frequently abused by scam call centers for unauthorized remote access.
author: Security Arsenal Threat Intelligence
date: 2026/11/08
status: experimental
logsource:
  category: process_creation
  product: windows
detection:
  selection_img:
    Image|endswith:
      - '\UltraViewer_Desktop.exe'
      - '\UltraViewer_Service.exe'
      - '\UltraViewer_setup.exe'
  selection_hash:
    Hashes|contains:
      - 'IMPHASH'  # Populate with known UltraViewer installer imphashes from threat feeds
  condition: selection_img or selection_hash
falsepositives:
  - Organizations legitimately using UltraViewer as approved RMM (rare in Western enterprise environments)
  - IT support teams with sanctioned UltraViewer deployments
level: high
tags:
  - attack.command_and_control
  - attack.t1219  # Remote Access Software
  - attack.t1659  # Content Injection (TDS landing)
---
title: Outbound Connection to Hotejka/ROI777 Help TDS Infrastructure
id: 7f3a1b2e-9c4d-4e5a-8b6f-hotejka0002
description: Detects DNS queries or network connections to known Hotejka/ROI777 Help Traffic Distribution System domains observed in OTX pulse. Hits indicate browser redirection into tech support scam funnel.
author: Security Arsenal Threat Intelligence
date: 2026/11/08
status: experimental
logsource:
  category: dns
  product: windows
detection:
  selection:
    query:
      - 'roi777.com'
      - 'roi-traffic.icu'
      - 'hotejka.ink'
      - 'hotejka.com'
      - 'hotcname.help'
      - 'lib1.biz'
      - 'fosetya.shop'
      - 'goalods.lol'
  condition: selection
falsepositives:
  - Threat research and security vendor scanning activity
level: critical
tags:
  - attack.command_and_control
  - attack.t1071.001  # Web Protocols
  - attack.t1189  # Drive-by Compromise
---
title: UltraViewer Service Installation for Persistent Remote Access
id: 7f3a1b2e-9c4d-4e5a-8b6f-hotejka0003
description: Detects creation of the UltraViewer Windows service, a persistence mechanism installed when tech support scam operators convince victims to install the RMM tool. Event ID 7045 (Service Control Manager).
author: Security Arsenal Threat Intelligence
date: 2026/11/08
status: experimental
logsource:
  product: windows
  service: system
detection:
  selection:
    EventID: 7045
    Service_Name|contains:
      - 'UltraViewer'
    ImagePath|contains:
      - 'UltraViewer'
  condition: selection
falsepositives:
  - Sanctioned UltraViewer deployments (validate against approved software inventory)
level: high
tags:
  - attack.persistence
  - attack.t1543.003  # Windows Service
  - attack.t1219  # Remote Access Software
KQL — Microsoft Sentinel / Defender
// Hotejka / ROI777 Help TDS + UltraViewer Hunt — Microsoft Sentinel
// Hunts for DNS/network hits to TDS infrastructure and UltraViewer execution artifacts
let TdsDomains = dynamic([
    "roi777.com", "roi-traffic.icu", "hotejka.ink", "hotejka.com",
    "hotcname.help", "lib1.biz", "fosetya.shop", "goalods.lol"
]);
let DnsHits =
    DeviceNetworkEvents
    | where TimeGenerated > ago(30d)
    | where RemoteUrl in~ (TdsDomains)
    | project TimeGenerated, DeviceName, InitiatingProcessFileName,
              InitiatingProcessCommandLine, RemoteUrl, RemoteIP, LocalIP
    | extend SignalType = "TDS Domain Contact";
let UltraViewerProc =
    DeviceProcessEvents
    | where TimeGenerated > ago(30d)
    | where FileName has_any ("UltraViewer_Desktop.exe", "UltraViewer_Service.exe", "UltraViewer_setup.exe")
       or ProcessCommandLine has "UltraViewer"
    | project TimeGenerated, DeviceName, AccountName, FileName,
              ProcessCommandLine, FolderPath, SHA256
    | extend SignalType = "UltraViewer Execution";
let UltraViewerNet =
    DeviceNetworkEvents
    | where TimeGenerated > ago(30d)
    | where InitiatingProcessFileName has "UltraViewer"
    | project TimeGenerated, DeviceName, InitiatingProcessFileName,
              RemoteIP, RemotePort, RemoteUrl
    | extend SignalType = "UltraViewer C2/Relay Traffic";
union DnsHits, UltraViewerProc, UltraViewerNet
| sort by TimeGenerated desc
| summarize Signals = make_set(SignalType), FirstSeen = min(TimeGenerated),
            LastSeen = max(TimeGenerated), Detail = take_any(Detail) by DeviceName, SignalType
| order by LastSeen desc
PowerShell
# Security Arsenal — Hotejka/ROI777 Help TDS + UltraViewer IOC Hunt
# Run elevated on suspected endpoints or deploy via RMM/Intune across fleet
# Checks: installed services, running processes, install paths, autostart, DNS cache

$report = [System.Collections.Generic.List[object]]::new()

# 1. UltraViewer services (persistence via Windows Service - T1543.003)
$services = Get-CimInstance Win32_Service -ErrorAction SilentlyContinue |
    Where-Object { $_.Name -like '*UltraViewer*' -or $_.PathName -like '*UltraViewer*' }
foreach ($svc in $services) {
    $report.Add([pscustomobject]@{
        Check = 'Service'; Indicator = $svc.Name
        Detail = "$($svc.State) | $($svc.PathName)"; Host = $env:COMPUTERNAME
    })
}

# 2. Running UltraViewer processes
$procs = Get-Process -ErrorAction SilentlyContinue | Where-Object { $_.Name -like '*UltraViewer*' }
foreach ($p in $procs) {
    $report.Add([pscustomobject]@{
        Check = 'Process'; Indicator = $p.Name
        Detail = "PID $($p.Id) | $($p.Path)"; Host = $env:COMPUTERNAME
    })
}

# 3. Common UltraViewer install paths
$paths = @(
    "$env:ProgramFiles\UltraViewer",
    "${env:ProgramFiles(x86)}\UltraViewer",
    "$env:LOCALAPPDATA\UltraViewer",
    "$env:APPDATA\UltraViewer"
)
foreach ($path in $paths) {
    if (Test-Path $path) {
        $report.Add([pscustomobject]@{
            Check = 'FilePath'; Indicator = $path
            Detail = 'UltraViewer installation directory present'; Host = $env:COMPUTERNAME
        })
    }
}

# 4. Run-key autostart entries
$runKeys = @(
    'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',
    'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
)
foreach ($rk in $runKeys) {
    $props = Get-ItemProperty -Path $rk -ErrorAction SilentlyContinue
    if ($props) {
        $props.PSObject.Properties | Where-Object { $_.Value -like '*UltraViewer*' } | ForEach-Object {
            $report.Add([pscustomobject]@{
                Check = 'Autostart'; Indicator = "$rk\$($_.Name)"
                Detail = $_.Value; Host = $env:COMPUTERNAME
            })
        }
    }
}

# 5. DNS cache hits for Hotejka/ROI777 TDS domains
$tdsDomains = @('roi777.com','roi-traffic.icu','hotejka.ink','hotejka.com','hotcname.help','lib1.biz','fosetya.shop','goalods.lol')
$dnsCache = Get-DnsClientCache -ErrorAction SilentlyContinue
foreach ($d in $tdsDomains) {
    $hits = $dnsCache | Where-Object { $_.Entry -like "*$d*" }
    foreach ($h in $hits) {
        $report.Add([pscustomobject]@{
            Check = 'DNSCache'; Indicator = $h.Entry
            Detail = "Resolved to $($h.Data) - TDS infrastructure contact"; Host = $env:COMPUTERNAME
        })
    }
}

# 6. Established outbound connections from UltraViewer processes
$conns = Get-NetTCPConnection -State Established -ErrorAction SilentlyContinue |
    Where-Object { ($_.OwningProcess | ForEach-Object { (Get-Process -Id $_ -ErrorAction SilentlyContinue).Name }) -like '*UltraViewer*' }
foreach ($c in $conns) {
    $report.Add([pscustomobject]@{
        Check = 'NetConn'; Indicator = "PID $($c.OwningProcess)"
        Detail = "$($c.RemoteAddress):$($c.RemotePort)"; Host = $env:COMPUTERNAME
    })
}

if ($report.Count -gt 0) {
    Write-Host "[!] $($report.Count) indicator(s) found on $env:COMPUTERNAME" -ForegroundColor Red
    $report | Format-Table -AutoSize
    $report | Export-Csv -Path ".\hotejka_hunt_$env:COMPUTERNAME.csv" -NoTypeInformation
} else {
    Write-Host "[+] No Hotejka/UltraViewer indicators found on $env:COMPUTERNAME" -ForegroundColor Green
}

Response Priorities

Immediate (0-4 hours):

  • Push all 15 OTX domains plus full indicator list to DNS RPZ, secure web gateway, and EDR network blocklists
  • Query DNS and proxy logs for the past 90 days for any resolution of listed domains; flag source hosts for user interview
  • Sweep the fleet for UltraViewer presence (installed software inventory, services, processes) — any instance outside an approved RMM list is treated as unauthorized remote access
  • If UltraViewer is found, isolate the host and capture memory/disk before remediation; assume the scammer had interactive access

24 hours:

  • For any host where UltraViewer executed with an established remote session, initiate full credential reset for the logged-on user (and any credentials accessible from that session) — scam operators routinely harvest saved browser credentials, access email, and attempt wire fraud during sessions
  • Check for secondary RMM installs (AnyDesk, TeamViewer, ScreenConnect) deployed as redundant access during the scam session
  • Review financial-adjacent activity: new payees, wire requests, mailbox forwarding rules, and password reset flows for accounts the victim accessed during the window of compromise
  • Interview affected users to confirm whether they called a support number and what actions the operator performed — this scopes fraud exposure

1 week:

  • Implement an RMM allowlist policy: block execution of non-approved remote access tools via AppLocker/WDAC or EDR custom rules — this is the single most effective control against tech support scam TTPs (MITRE T1219)
  • Deploy browser-level protection against scam landing pages (SmartScreen/Safe Browsing enforcement, block of full-screen lock scripts where feasible)
  • Add Cloudflare Pages-hosted scam detection to threat intel feeds; Hotejka predictably reuses hosting patterns that enable predictive blocking
  • Run a targeted user awareness module on tech support scams for populations matching the campaign's targeting (corporate users in the 7 targeted countries), emphasizing that Microsoft/Apple never display phone numbers in security alerts

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.