Photo ZIP Campaign Targets Hotels With Persistent Node.js Implant

· Original article ↗

Summary

Microsoft reports a campaign targeting hospitality organizations in Europe and Asia with fake image shortcuts and a Node.js implant. Phishing messages abuse Calendly and Google redirects; the actor and ultimate objective remain unknown.

Key points

  • Microsoft has tracked the campaign since April 2026 and has not attributed it to a known threat actor.
  • Phishing lures use Calendly notifications and Google redirects to deliver photo-themed ZIP archives containing executable shortcuts disguised as PNG images.
  • Opening a shortcut launches an obfuscated PowerShell decoder that downloads a script and leads to a Node.js implant; a later wave also introduced on-device .NET DLL compilation.
  • The implant adds Defender process exclusions and uses registry Run and RunOnce entries to maintain separate Node.js and ProgramData execution paths.
  • On one compromised device, Node.js persistence survived a payload block and resumed command-and-control activity approximately two days later.
  • Microsoft observed browser automation, network-context lookups and forced shutdowns on some affected devices; the campaign’s ultimate objective remains unclear.
  • Microsoft recommends investigating the full execution chain and removing both persistence entries, the Node.js runtime and associated scripts during remediation.

Article Details

Attack Vectors
  • Phishing messages sent through Calendly notifications used multilingual hospitality-themed lures and redirects to photo-themed ZIP downloads.
  • ZIP archives contained shortcut files disguised as PNG images. Opening a shortcut launched an obfuscated PowerShell downloader.
  • Downloaded scripts deployed a Node.js implant; Wave 2 also compiled a DLL locally, although Microsoft did not observe the DLL being loaded.
Defensive Notes
  • Hunt for photo-themed ZIPs and fake image shortcuts followed by PowerShell decoding, temporary script staging, and Node.js execution from user directories.
  • Investigate PowerShell-initiated csc.exe and cvtres.exe compilation, Defender exclusions for temporary executables, and silent installer activity.
  • Remove both the Node.js Run key and the ProgramData RunOnce entry during remediation, along with the associated Node.js runtime and JavaScript files.
  • Review connections to the reported C2 ports and recently registered photo-themed .cfd domains; investigate headless browser execution and forced shutdowns on affected hosts.

Indicators of compromise

TypeIndicatorContext
DOMAINaluminiostramuntana[.]comWave 2 C2 domain.
DOMAINginrinsou[.]comLegitimate domain suspected of being compromised and used as an alternate sending relay.
DOMAINhigoksbupwou[.]comWave 2 C2 domain.
DOMAINkelopins[.]infoC2 domain passed as an argument to the Node.js implant.
DOMAINkentjerk[.]infoC2 domain passed as an argument to the Node.js implant.
DOMAINphoto-132454[.]cfdWave 2 phishing landing domain.
DOMAINphoto-21473[.]xyzWave 2 C2 domain.
DOMAINphoto-26254[.]cfdWave 2 phishing landing domain.
DOMAINphoto-26653[.]cfdShort-lived Wave 2 phishing landing domain.
DOMAINphoto-26654[.]cfdWave 2 phishing landing domain used to deliver photo-themed ZIP archives.
DOMAINphoto-26656[.]cfdShort-lived Wave 2 phishing landing domain.
DOMAINphoto-27857[.]cfdShort-lived Wave 2 phishing landing domain.
DOMAINphoto-7216102[.]clickWave 2 C2 domain.
DOMAINphoto-8632454[.]cfdWave 2 phishing landing domain.
DOMAINphotodoc-secure[.]infoC2 domain passed as an argument to the Node.js implant.
DOMAINrecallnine[.]infoC2 domain passed as an argument to the Node.js implant.
DOMAINsafedocphoto[.]infoC2 domain passed as an argument to the Node.js implant.
DOMAINsec-safe-dc[.]infoC2 domain observed in both campaign waves.
DOMAINzloapobikahy23[.]bondWave 2 C2 domain.
IPV4178[.]16[.]54[.]27C2 IP active across both campaign waves on ports 56001 and 56002.
IPV4178[.]16[.]55[.]179Additional Wave 1 C2 IP.
IPV4193[.]202[.]84[.]32Secondary Wave 1 C2 IP.
IPV495[.]217[.]97[.]121Wave 1 C2 beaconing IP.
SHA25604ec44f2618460f5c77c5e56014a512cc03a123c9c5b6b6b1273e2a1681ac2e1Hash of xmnrwv9l.exe, a PE payload observed in both waves and blocked on one device.
SHA25606a2888c1f07119873ccb051221bd8717281494b33585f4242556e6e5e227969Hash of a Wave 1 campaign payload.
SHA25683e970feb3f10692c164f6889f7a026f135c2433e5bf8e662a6e63a3b81267b7Hash of a Wave 1 campaign payload.
SHA25697448688b292bfec6d83b153588076fe59b111c35ac4e42a916238df16a71e2fHash of the Wave 2 malicious PHOTO-215746435.png.lnk shortcut.
SHA2569f10e3b6e5745784f26d18c38ce01fba054b19749c17260978ac11472564aee2Hash of the malicious IMG-386443483.png.lnk shortcut.
SHA256b7f46b192cd83a1d2487cb048cca645f6e8855b9673d500d50bbdb04eebc6beaHash of bjygtujc.dll, compiled on a target during Wave 2.
SHA256c5baa0c16b0074a1e94b48aa0177e9bfc23746aca8a5b42848a6685da85658b5Hash of qFWe908J.ps1, a Wave 2 PowerShell script.

MITRE ATT&CK

T1016 · System Network Configuration DiscoveryCompromised devices queried ip-api.com for external network context.T1027 · Obfuscated Files or InformationThe PowerShell downloader evolved through seven phases of arithmetic and syntax obfuscation.T1027.004 · Compile After DeliveryWave 2 scripts triggered csc.exe and cvtres.exe to compile small DLLs on target devices.T1036 · MasqueradingExecutable LNK files used .png.lnk names to masquerade as image files.T1059.001 · PowerShellAn obfuscated PowerShell BigInt decoder retrieved and executed a subsequent .ps1 script.T1059.007 · JavaScriptThe implant used Node.js to execute JavaScript payloads with C2 domain arguments.T1204.002 · Malicious FileThe attack required recipients to open a shortcut disguised as a PNG image.T1547.001 · Registry Run Keys / Startup FolderHKCU Run launched the Node.js implant while a repeatedly refreshed RunOnce entry launched a ProgramData payload.T1562.001 · Disable or Modify ToolsThe campaign added Defender process exclusions for randomly named executables in temporary paths.T1566.002 · Spearphishing LinkPhishing notifications contained redirect links leading to photo-themed payload downloads.T1571 · Non-Standard PortC2 beaconing used ports including 8443, 8445, 8453, 5555, and 56001–56003.T1583.001 · DomainsThe operator registered and rotated short-lived photo-themed landing domains.T1583.006 · Web ServicesAn actor-controlled Calendly account and Google redirect tokens were used to relay phishing.T1584.006 · Web ServicesMicrosoft reported suspected use of a compromised legitimate domain as an alternate sending relay.

People

Malware

Vendors

Products

Industries

Related Articles