Operation FlutterBridge Delivers macOS FlutterShell Backdoor Through Malvertising

· Original article ↗

Summary

Unit 42 reports that CL-CRI-1089 used hundreds of Google-verified ads and shell companies to distribute FlutterShell, a macOS backdoor disguised as apps. Its remote JavaScript bridge enables command execution, Chrome hijacking and document exfiltration through AI summar

Key points

  • Researchers identified three FlutterShell variants disguised as a podcast player and PDF viewers; the apps were signed with valid Apple Developer IDs and passed notarization.
  • A WebView-based JavaScript-to-native bridge loads malicious logic remotely, allowing attackers to change commands without rebuilding or redistributing the app.
  • The backdoor can execute shell commands, manipulate files and collect environment variables; observed adware behavior includes changing Chrome settings to route traffic through an ad-filled intermediary.
  • Some PDF-viewer variants send document contents through attacker infrastructure before AI summarization, allowing attackers to collect the documents.
  • The campaign distributed the apps through hundreds of Google-verified ads and shell companies. After Unit 42 reported the advertisers, Google said it had suspended their accounts.
  • Researchers found increasing obfuscation across variants and technical similarities to JSCoreRunner, including shared backdoor commands and a JavaScript-to-native architecture.

Article Details

Attack Vectors
  • Verified advertisements distributed through shell-company advertiser accounts promoted malicious macOS installers disguised as podcast players and PDF viewers.
  • FlutterShell loads attacker-hosted webpages in a WebView and uses a JavaScript-to-native bridge to execute remotely supplied commands.
  • The malware modifies Google Chrome preferences and relaunches the browser to route searches and new tabs through an ad-filled intermediary site.
  • Some variants route document contents through attacker infrastructure for AI summarization, allowing the operators to collect the contents.
  • The malware delays loading its malicious webpage after startup; user clicks on application About or Update buttons can also trigger the webpage.
Defensive Notes
  • Google stated that it suspended advertiser accounts for violating its policies after the campaign was reported.
  • The article says URL and DNS filtering identify known domains and URLs associated with the activity, and endpoint prevention layers can help prevent the malware.
  • The article reports that malware-analysis protections were reviewed and updated using indicators associated with FlutterShell.

Indicators of compromise

TypeIndicatorContext
DOMAINads-parkpro[.]comWebsite previously associated with AdsParkPro LTD, a shell advertiser linked to the campaign's malicious advertising activity.
DOMAINadsparkpro[.]netListed as prior infrastructure linked to shell entities used in the campaign's malicious advertising.
DOMAINadsparkpro[.]topListed as prior infrastructure linked to shell entities used in the campaign's malicious advertising.
DOMAINatsheisdomestic[.]orgPodcastsLounge C2 domain hosting malicious web content and update logic.
DOMAINetoftheappyrince[.]orgPDF-Brain C2 domain used to host attacker-controlled content and update endpoints.
DOMAINhealightejustb[.]orgPDF-Ninja C2 domain hosting attacker-controlled content and update endpoints.
DOMAINsinterfumesco[.]comAttacker-controlled adware intermediary set in Chrome preferences to receive hijacked searches and new-tab traffic.
DOMAINsoftwe[.]artWebsite associated with SOFT WE ART, an entity linked to prior malicious adware distribution.
SHA256021666417de8b9972c179783fe60d4c4ad2d93224e3a0f16137065c960b1b845SHA-256 of the malicious PodcastsLounge DMG installer.
SHA25630448686ec900d5213d74f08f0d2b7924c5336a29445b2a434aba8d8b19d7530SHA-256 of the malicious PDF-Ninja application executable.
SHA256363923500ce942bf1a953e8a4e943fbf1fb1b5ed6e5d247964c345b3ad5bfc34SHA-256 of the malicious PodcastsLounge application executable.
SHA25648047c34bbd57fe1e24bc538bc2ce9e0ac4c4eb48d3b0c195b414f0379dc0745SHA-256 of a dynamic library associated with the malicious PDF-Ninja application.
SHA256644fc49fa1006a2a2acace694e5fb83753164e2617051ece6d9dc9ea32329e70SHA-256 of the malicious PDF-Brain DMG installer.
SHA2568421c902364980e3d762ec6dbbe6b0f40577c27bd79b48c57d098328b2533109SHA-256 of a dynamic library associated with the malicious PodcastsLounge application.
SHA2569053e8ddaecca1f960c041c944ca8799fc71dc86a4b50d2639ee4e0d2cb82f47SHA-256 of the malicious PDF-Brain application executable.
SHA2569425e8e39fa8a7212cdd07f0917cb3dfde38a90b87297de2c82a5850aff1e4deSHA-256 of the malicious PDF-Ninja DMG installer.
SHA256b60074d1ea2008a581f432f2dee5f84f78668d9dd8e66f75d03c42dabd89bdeaSHA-256 of a dynamic library associated with the malicious PDF-Brain application.
URLhxxps[:]//atsheisdomestic[.]org/update-thanks.htmlAttacker-controlled PodcastsLounge webpage containing the malicious FlutterShell logic.
URLhxxps[:]//etoftheappyrince[.]org/update-delayPDF-Brain C2 update-delay endpoint.
URLhxxps[:]//healightejustb[.]org/checkupdateTO.jsPDF-Ninja C2 JavaScript endpoint.

MITRE ATT&CK

T1005 · Data from Local SystemThe backdoor can read files, including documents processed by its summarization feature, before forwarding their contents.T1027 · Obfuscated Files or InformationThe PDF-Brain variant obfuscates strings, and PDF-Ninja uses Flutter's obfuscation flag to strip debug information and randomize symbols.T1036.005 · Match Legitimate Resource Name or LocationFlutterShell variants masquerade as legitimate podcast-player and PDF-viewer applications.T1041 · Exfiltration Over C2 ChannelSome variants forward document contents through the attackers' C2 server for AI summarization, enabling exfiltration.T1059.004 · Unix ShellFlutterShell's built-in commands can execute arbitrary shell commands on the infected macOS system.T1059.007 · JavaScriptFlutterShell executes attacker-supplied JavaScript loaded in its WebView through a JavaScript-to-native bridge.T1071.001 · Web ProtocolsFlutterShell uses HTTP requests and attacker-hosted webpages to communicate with its C2 infrastructure.T1105 · Ingress Tool TransferFlutterShell retrieves remote JavaScript logic and update-related content from attacker-controlled endpoints.T1204.002 · Malicious FileThe campaign distributes malicious application installers disguised as desktop software; loading malicious content can also follow user clicks on About or Update buttons.T1497.003 · Time Based ChecksFlutterShell delays loading attacker-controlled content after startup, including fallback delays of 600 or 1200 seconds, to evade short-running analysis environments.T1565.001 · Stored Data ManipulationFlutterShell alters Chrome Secure Preferences, changing search and new-tab URLs to route browser traffic through attacker infrastructure.

Threat Actors

Malware

Vendors

Products

Tools

Countries

Related Articles