SOC Prime Bias: Critical

06 May 2026 14:15

Media Company CloudZ RAT potentially steals OTP messages using Pheno plugin

Author Photo
SOC Prime Team linkedin icon Follow
Media Company CloudZ RAT potentially steals OTP messages using Pheno plugin
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Summary

Cisco Talos identified an intrusion in which attackers deployed the CloudZ remote access trojan together with a custom plugin called Pheno. The activity targets Windows 10 and 11 systems that rely on Microsoft Phone Link to synchronize with mobile devices. By abusing the Phone Link bridge on the workstation, the attackers can access SMS content and one-time password messages without placing malware directly on the phone itself. The infection chain uses a Rust-based dropper, a .NET loader, scheduled-task persistence, and several payload delivery methods.

Investigation

Talos traced the intrusion to a fake ScreenConnect update that delivered a Rust-compiled loader named systemupdates.exe or Windows-interactive-update.exe. That loader decrypted and dropped a .NET component, which then installed CloudZ RAT through a scheduled task that launched regasm.exe. After installation, CloudZ retrieved the Pheno plugin from a staging server and used it to access data stored in the Phone Link SQLite database. Investigators also identified command-and-control infrastructure, including the IP address 185.196.10.136 and multiple malicious domains tied to the campaign.

Mitigation

Cisco Talos noted that ClamAV detections such as Win.Packed.Msilheracles and Win.Trojan.CloudZRAT, along with Snort rules 66408–66410 and 301492, can help identify the threat. Blocking the known malicious domains and IP address, while restricting execution of unsigned binaries from locations such as ProgramData, can help stop the loader chain. Organizations can also reduce exposure by disabling or closely monitoring Microsoft Phone Link and by enforcing least privilege over scheduled task creation and execution.

Response

If this activity is detected, isolate the affected host immediately and collect memory and disk images for forensic analysis. Investigators should confirm the presence of the SystemWindowsApis scheduled task and any CloudZ-related binaries, then remove them from the system. The identified command-and-control infrastructure should be blocked, and potentially exposed credentials should be reset, especially where OTP-based authentication may have been intercepted. A broader system review should also examine other persistence methods and audit PowerShell and regasm.exe activity for related abuse.

"graph TB %% Class definitions classDef technique fill:#ffe699 %% Node definitions step1_user_exec["<b>Technique</b> – <b>T1204.002 User Execution: Malicious File</b><br/><b>Description</b>: User is tricked into running a malicious executable masquerading as a fake ScreenConnect update."] class step1_user_exec technique step2_persistence["<b>Technique</b> – <b>T1218.009 System Binary Proxy Execution: Regsvcs/Regasm</b><br/><b>Description</b>: Malicious code is executed via regsvcs or regasm through a scheduled task, leveraging trusted .NET binaries."] class step2_persistence technique step3_obfuscation["<b>Technique</b> – <b>T1027 Obfuscated Files or Information</b><br/><b>Description</b>: Payload is packed with ConfuserEx and XORu2011encrypted to hide its true functionality."] class step3_obfuscation technique step4_dynamic_api["<b>Technique</b> – <b>T1027.007 Dynamic API Resolution</b><br/><b>Description</b>: At runtime the malware resolves required APIs, checking for analysis tools to avoid static detection."] class step4_dynamic_api technique step5_indicator_removal["<b>Technique</b> – <b>T1027.005 Indicator Removal from Tools</b><br/><b>Description</b>: The code aborts execution if security utilities are detected, removing any observable indicators."] class step5_indicator_removal technique step6_reflective_load["<b>Technique</b> – <b>T1620 Reflective Code Loading</b><br/><b>Description</b>: .NET payload is loaded directly into memory reflectively, leaving no file on disk."] class step6_reflective_load technique step7_process_discovery["<b>Technique</b> – <b>T1057 Process Discovery</b><br/><b>Description</b>: Malware enumerates running processes to locate and possibly disable security tools."] class step7_process_discovery technique step8_browser_creds["<b>Technique</b> – <b>T1555.003 Credentials from Web Browsers</b><br/><b>Description</b>: Stored browser passwords are extracted and prepared for exfiltration."] class step8_browser_creds technique step9_steal_cookie["<b>Technique</b> – <b>T1539 Steal Web Session Cookie</b><br/><b>Description</b>: Active web session cookies are captured from the browser."] class step9_steal_cookie technique step10_use_cookie["<b>Technique</b> – <b>T1550.004 Use Alternate Authentication Material: Web Session Cookie</b><br/><b>Description</b>: Stolen cookies are reused to authenticate to target web services."] class step10_use_cookie technique step11_browser_info["<b>Technique</b> – <b>T1217 Browser Information Discovery</b><br/><b>Description</b>: Additional browser data and OTP messages are gathered for further abuse."] class step11_browser_info technique step12_bits_jobs["<b>Technique</b> – <b>T1197 BITS Jobs</b><br/><b>Description</b>: BITS jobs download extra malicious plugins using bitsadmin, curl, or PowerShell."] class step12_bits_jobs technique step13_exfil_encrypted["<b>Technique</b> – <b>T1048.002 Exfiltration Over Asymmetric Encrypted Nonu2011C2 Protocol</b><br/><b>Description</b>: Collected data is sent out over an encrypted TCP socket that is not part of a standard C2 channel."] class step13_exfil_encrypted technique step14_c2_web["<b>Technique</b> – <b>T1071.001 Application Layer Protocol: Web Protocols</b><br/><b>Description</b>: Command and control traffic uses HTTP/S with rotating useru2011agents and antiu2011caching headers."] class step14_c2_web technique %% Connections step1_user_exec –>|leads_to| step2_persistence step2_persistence –>|leads_to| step3_obfuscation step3_obfuscation –>|leads_to| step4_dynamic_api step4_dynamic_api –>|leads_to| step5_indicator_removal step5_indicator_removal –>|leads_to| step6_reflective_load step6_reflective_load –>|leads_to| step7_process_discovery step7_process_discovery –>|leads_to| step8_browser_creds step8_browser_creds –>|leads_to| step9_steal_cookie step9_steal_cookie –>|leads_to| step10_use_cookie step10_use_cookie –>|leads_to| step11_browser_info step11_browser_info –>|leads_to| step12_bits_jobs step12_bits_jobs –>|leads_to| step13_exfil_encrypted step13_exfil_encrypted –>|leads_to| step14_c2_web "

Attack Flow

Simulation Execution

Prerequisite: The Telemetry & Baseline Pre‑flight Check must have passed.

Rationale: This section details the precise execution of the adversary technique (TTP) designed to trigger the detection rule. The commands and narrative MUST directly reflect the TTPs identified and aim to generate the exact telemetry expected by the detection logic.

  • Attack Narrative & Commands:
    The attacker has compromised a low‑privilege user account and wishes to establish persistence while confirming that the CloudZ .NET loader is active. They:

    1. Create a scheduled task that launches a PowerShell script (C:Tempcloudz.ps1).
    2. Immediately execute the task with schtasks /run to ensure the script runs.
    3. Inside the script, enumerate all processes using Get‑CimInstance Win32_Process to test for the .NET loader presence.
    4. The PowerShell process and the schtasks command both produce Sysmon EventID 1 records whose CommandLine fields contain the exact strings the rule watches, causing an alert.
  • Regression Test Script:

    #-------------------------------------------------
    # CloudZ‑style persistence & verification script
    #-------------------------------------------------
    $taskName = "CloudZ_Persistence"
    $scriptPath = "C:Tempcloudz.ps1"
    
    # 1️⃣ Write the PowerShell payload that queries processes
    @"
    # CloudZ payload – process enumeration
    Get-CimInstance Win32_Process | Out-Null
    "@ | Set-Content -Path $scriptPath -Encoding ASCII
    
    # 2️⃣ Register a scheduled task that runs the payload
    $action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-NoProfile -ExecutionPolicy Bypass -File `"$scriptPath`""
    $trigger = New-ScheduledTaskTrigger -AtLogOn
    Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -Force
    
    # 3️⃣ Immediately run the task (generates schtasks /run)
    schtasks /run /tn "$taskName"
    
    # 4️⃣ Short pause to allow logging
    Start-Sleep -Seconds 5
  • Cleanup Commands:

    # Remove scheduled task
    Unregister-ScheduledTask -TaskName "CloudZ_Persistence" -Confirm:$false
    
    # Delete the payload script
    Remove-Item -Path "C:Tempcloudz.ps1" -Force
    
    # Optionally stop Sysmon (restore original config) if needed
    # & "$env:ProgramFilesSysinternalsSysmon.exe" -u