SmoothOperator | Ongoing Campaign Trojanizes 3CXDesktopApp in Supply Chain Attack

SentinelOne details a multi-stage supply-chain campaign that trojanizes the 3CXDesktopApp, loading shellcode and pulling ICO data from GitHub to deliver a 3rd-stage infostealer DLL. The operation also extends to macOS with separate stages (libffmpeg.dylib and UpdateAgent) and a backdoor linked to POOLRAT, with a forged code-signing certificate used to sign binaries. Hashtags: #SmoothOperator #3CXDesktopApp #POOLRAT #SIMPLESEA #IconStorages

Keypoints

  • SentinelOne observed a spike in behavioral detections for the 3CXDesktopApp, with automated blocking and quarantine of trojanized installers.
  • The malicious installer uses a multi-stage chain: shellcode loads a DLL, which loads further payloads from a GitHub ICO repository, and ultimately retrieves a 3rd-stage infostealer DLL.
  • A code signing certificate was used to sign the trojanized binaries, indicating an additional level of trust forged by the attackers.
  • The macOS component includes a trojanized libffmpeg.dylib and a second-stage UpdateAgent, with Apple notarization later revoked for the trojanized macOS components; a POOLRAT backdoor is also involved on macOS.
  • The 2nd macOS stage (UpdateAgent) collects 3CX installation account details and sends them to a hardcoded attacker server, without persistence in that stage.
  • IOC updates and macOS indicators were added through March 30, 2023, including a list of URIs and SHA-1 hashes; attribution remains uncertain, with infrastructure traced back to February 2022 but no clear linkage to known clusters.
  • The campaign demonstrates a broader strategy to abuse PBX/VOIP software for supply-chain compromise and subsequent data exfiltration across Windows and macOS environments.

MITRE Techniques

  • [T1055] Process Injection – The shellcode reflectively loads a DLL, removing the β€˜MZ’ at the start. β€œ[The shellcode reflectively loads a DLL, removing the β€˜MZ’ at the start.]”
  • [T1105] Ingress Tool Transfer – The malware downloads icon files from a dedicated Github repository. β€œ[downloading icon files from a dedicated Github repository: …]”
  • [T1140] Deobfuscate/Decode Files or Information – ICO files are appended with base64 data and decoded to obtain a C2 URL. β€œ[ICO files are appended with a chunk of base64 encoded data after a β€˜$’ character. The malware searches for the β€˜$’ and extracts the remaining bytes from the ICO file. These bytes are decoded and decrypted, yielding a C&C URL.]”
  • [T1071.001] Web Protocols – The main loop builds and encrypts an β€œinitial-run” command to the C2 and sends it via HTTP POST. β€œ[The main loop first will build and encrypt an β€˜initial-run’ command to the C&C. It sends this command via an HTTP POST request.]”
  • [T1116] Code Signing – The compromise includes a code signing certificate used to sign the trojanized binaries. β€œ[The compromise includes a code signing certificate used to sign the trojanized binaries.]”
  • [T1543.003] Create or Modify System Process: Launch Daemons – macOS persistence via Launch Daemons for the POOLRAT backdoor. β€œ[Launch Daemons as a persistence mechanism.]”
  • [T1082] System Information Discovery – The Windows infostealer collects computer name, domain, and OS version information. β€œ[NetWkstaGetInfo to obtain the computer name and domain name. It calls RtlGetVersion to obtain the Windows version.]”

Indicators of Compromise

  • [URL] IoC context – github.com/IconStorages/images, https://www.3cx.com/blog/event-trainings/
  • [Email] IoC context – [email protected], [email protected]
  • [SHA-1] IoC context – cad1120d91b812acafef7175f949dd1b09c6c21a, bf939c9c261d27ee7bb92325cc588624fca75429
  • [URI] IoC context – https://azureonlinestorage.com/azure/storage, https://pbxsources.com/exchange
  • [URL] IoC context – https://msedgepackageinfo.com/microsoft-edge, https://glcloudservice.com/v1/console
  • [URI] IoC context – https://pbxsources.com/exchange, https://msstorageazure.com/window
  • [File Path] IoC context – ~/Library/Application Support/3CXDesktop App/.main_storage, ~/Library/Application Support/3CXDesktop App/UpdateAgent

macOS Indicators of Compromise

1st Stage – libffmpeg.dylib
137b311737bcba57782a167a8f7cea0872ba7316
2c69d27fadf6244a80449579ab5ce450c0920678
354251ca9476549c391fbd5b87e81a21a95949f4
5b0582632975d230c8f73c768b9ef39669fefa60
6723ee0f25d401154756ffd99f4d27c6a6819b87
769383fc65d1386dd141c960c9970114547da0c2
b2a89eebb5be61939f5458a024c929b169b4dc85
e53e6b08fca672119581c1974e6ba391eed9c010

2nd Stage – UpdateAgent
9e9a5f8d86356796162cee881c843cde9eaedfb3

2nd Stage – URI
https://sbmsa.wiki/blog/_insert

File Paths

~/Library/Application Support/3CXDesktop App/.main_storage ~/Library/Application Support/3CXDesktop App/UpdateAgent

Source: https://www.sentinelone.com/blog/smoothoperator-ongoing-campaign-trojanizes-3cx-software-in-software-supply-chain-attack/

Read more: https://www.sentinelone.com/blog/smoothoperator-ongoing-campaign-trojanizes-3cx-software-in-software-supply-chain-attack/