Skip to main content
Mallory
Back to malware
MalwareUsed by 1 actor

OSX_OCEANLOTUS.D

Also known asBackdoor.MacOS.OCEANLOTUS.F

OSX_OCEANLOTUS.D is a macOS backdoor identified by Trend Micro and assessed as a variant used by OceanLotus, also known as APT32, APT-C-00, SeaLotus, and Cobalt Kitty. The malware was delivered via a malicious Microsoft Word document themed as a Vietnamese event registration form and likely distributed by email. The lure document prompted users to enable obfuscated macros, which extracted and executed a Perl-based payload that dropped a Mach-O backdoor. The malware targeted macOS systems with Perl installed.

The dropper checked whether it was running as root and installed the backdoor accordingly. For root execution, it installed the payload as /Library/CoreMediaIO/Plug-Ins/FCP-DAL/iOSScreenCapture.plugin/Contents/Resources/screenassistantd; for regular-user execution, it installed it as ~/Library/Spelling/spellagentd. It hid the installed file, changed permissions to 755, and altered timestamps using the touch -t command. Persistence was established using com.apple.screen.assistantd.plist for root users or com.apple.spell.agent.plist for regular users, placed in /Library/LaunchDaemons/ or ~/Library/LaunchAgents/ with RunAtLoad and KeepAlive keys, then loaded with launchctl. Additional reporting also notes creation of persistence files in /Library/LaunchAgents.

The malware disguised its true file structure as an application bundle by adding special characters to the filename and using the icon of legitimate Word documents. A variant has been observed packed with UPX.

The backdoor collected host identifiers and system information, including serial number, hardware UUID, MAC address, OS version, username, computer name, and architecture. It derived a clientID from environment data and a randomly generated UUID. Strings in the dropper and backdoor were encrypted with a hardcoded RSA256 key. For communications, the malware used AES256 and Base64-encoded or scrambled data, and has been described as scrambling and encrypting data before transmission. It used a custom binary protocol over TCP port 443, with zlib compression applied to data after offset 0x52. For network communications it loaded a .dylib via dlopen() and resolved functions with dlsym().

Documented backdoor capabilities include downloading and executing files, running terminal commands, transferring files, and deleting files from the system. Associated command-and-control servers reported in the source material are ssl.arkouthrie.com, s3.hiahornber.com, and widget.shoreoa.com.

The activity is linked to OceanLotus/APT32, which the source material associates with targeted attacks against human rights organizations, media organizations, research institutes, and maritime construction firms.

Share:
For your environment

Hunt this family in your stack

Mallory pivots from this family to the IOCs, detections, and named campaigns that touch your stack, and pages you when something new lands.

THREAT ACTORS

Groups observed using it

1 distinct threat actor attributed by public researchers. Open in Mallory to see the full evidence chain and overlapping campaigns.

View more details
APT32

We identified a MacOS backdoor (detected by Trend Micro as OSX_OCEANLOTUS.D) that we believe is the latest version of a threat used by OceanLotus... The dropper is used to install the backdoor into the infected system and establish its persistence.

via trend micro researchtrendmicro.com
MITRE ATT&CK

Techniques & procedures

27 distinct techniques documented for this family, organized by ATT&CK tactic.

Initial Access

1 technique
T1566.001Spearphishing AttachmentEvidence1

The MacOS backdoor was found in a malicious Word document presumably distributed via email. Upon receiving the malicious document, the user is advised to enable macros.

Execution

4 techniques
T1059Command and Scripting InterpreterEvidence1

Both create one thread, and each thread is responsible for either downloading and executing the file or running a command line program in the terminal.

T1059.001PowerShellEvidence2

The content repeatedly describes threat actors and malware using PowerShell scripts/commands for execution, download, staging, reconnaissance, persistence, credential access, lateral movement, and defense evasion; e.g., "Sandworm Team used PowerShell scripts to run a credential harvesting tool in memory to evade defenses."

T1059.006PythonEvidence1

After deobfuscation, we can see that the payload is written in the Perl programming language. It extracts theme0.xml file from the Word document.

T1129Shared ModulesEvidence1

Astaroth uses the LoadLibraryExW() function to load additional modules. Attor's dispatcher can execute additional plugins by loading the respective DLLs. ... LightSpy's main executable and module .dylib binaries are loaded using ... dlopen() ... dlsym() ... RotaJakiro uses ... .so files ... using dlopen() and dlsym().

Persistence

3 techniques
T1037.005Startup ItemsEvidence1

Afterwards, the persistence file will be created in /Library/LaunchDaemons/ or ~/Library/LaunchAgents/ folder. The RunAtLoad key will command launchd to run the daemon when the operating system starts up... launchctl load ~/Library/LaunchAgents/ filename.plist

T1543.001Launch AgentEvidence1

Bundlore can persist via a LaunchAgent. Calisto adds a .plist file to the /Library/LaunchAgents folder to maintain persistence. CoinTicker creates user launch agents named .espl.plist and com.apple.[random string].plist to establish persistence.

T1543.004Launch DaemonEvidence1

Afterwards, the persistence file will be created in /Library/LaunchDaemons/ or ~/Library/LaunchAgents/ folder. The RunAtLoad key will command launchd to run the daemon when the operating system starts up... launchctl load /Library/LaunchDaemons/filename.plist

Privilege Escalation

3 techniques
T1037.005Startup ItemsEvidence1

Afterwards, the persistence file will be created in /Library/LaunchDaemons/ or ~/Library/LaunchAgents/ folder. The RunAtLoad key will command launchd to run the daemon when the operating system starts up... launchctl load ~/Library/LaunchAgents/ filename.plist

T1543.001Launch AgentEvidence1

Bundlore can persist via a LaunchAgent. Calisto adds a .plist file to the /Library/LaunchAgents folder to maintain persistence. CoinTicker creates user launch agents named .espl.plist and com.apple.[random string].plist to establish persistence.

T1543.004Launch DaemonEvidence1

Afterwards, the persistence file will be created in /Library/LaunchDaemons/ or ~/Library/LaunchAgents/ folder. The RunAtLoad key will command launchd to run the daemon when the operating system starts up... launchctl load /Library/LaunchDaemons/filename.plist

Stealth

7 techniques
T1027Obfuscated Files or InformationEvidence6

The content repeatedly describes payloads, strings, configuration files, scripts, URLs, and binaries being obfuscated or encoded using Base64, XOR, RC4, AES, RSA, hex encoding, custom algorithms, and other methods across many malware families and threat actors.

T1036MasqueradingEvidence1

It extracts theme0.xml file from the Word document. theme0.xml is a Mach-O 32-bit executable... For root user path: /Library/CoreMediaIO/Plug-Ins/FCP-DAL/iOSScreenCapture.plugin/Contents/Resources/ processname: screenassistantd For regular user path: ~/Library/Spelling/ processname: spellagentd

T1036.005Match Legitimate Resource Name or LocationEvidence1

The app bundle is disguised as a doc file to trick users into executing it

T1070.004File DeletionEvidence8

The content repeatedly describes threat actors and malware deleting files, tools, scripts, logs, droppers, staged data, and artifacts from compromised systems to cover tracks, remove evidence, or self-delete.

T1070.006TimestompEvidence3

APT28 has performed timestomping on victim files. APT29 has used timestomping to alter the Standard Information timestamps on their web shells to match other files in the same directory. APT32 has used scheduled task raw XML with a backdated timestamp... APT38 has modified data timestamps to mimic files that are in the same folder on a compromised host.

T1140Deobfuscate/Decode Files or InformationEvidence2

The content repeatedly describes malware and threat actors decoding, decrypting, or deobfuscating payloads, strings, configuration data, commands, and C2 traffic prior to execution or use, e.g., 'APT28 macro uses the command certutil -decode to decode contents of a .txt file storing the base64 encoded payload' and 'Action RAT can use Base64 to decode actor-controlled C2 server communications.'

T1564.001Hidden Files and DirectoriesEvidence1

The dropper installs the backdoor, sets its attributes to “hidden”, and sets a random file date and time... This persistence file is also set to hidden with a randomly generated file date and time.

Defense Impairment

1 technique
T1222.002Linux and Mac File and Directory Permissions ModificationEvidence1

Change access permission of second-stage payload to execute the launch of the second-stage payload

Discovery

4 techniques
T1016System Network Configuration DiscoveryEvidence2

The content repeatedly describes actors and malware using commands and APIs such as ipconfig /all, ifconfig, arp -a, route print, netsh interface show, GetAdaptersInfo, and GetIpNetTable to gather IP addresses, MAC addresses, DNS, DHCP, gateways, routing tables, ARP cache, proxy settings, and network adapter/interface details.

T1033System Owner/User DiscoveryEvidence1

Running getpwuid ->pw_name, scutil --get ComputerName, and uname –m will provide the following returns respectively: Mac OSX 10.12. System Administrator <owner’s name>'s iMac x86_64

T1082System Information DiscoveryEvidence4

The content repeatedly describes malware and threat actors collecting host details such as OS version, hostname, architecture, CPU, memory, BIOS, domain, language, and other configuration data; e.g., "APT41 uses multiple built-in commands such as systeminfo and net config Workstation to enumerate victim system basic configuration information."

T1614System Location DiscoveryEvidence1

The HandlePP::getClientID method uses the following environment variables: Serial number, Hardware UUID, MAC address, Randomly generated UUID

Collection

1 technique
T1560.003Archive via Custom MethodEvidence1

The backdoor encrypts the data before exfiltration

Command and Control

5 techniques
T1001.001Junk DataEvidence1

Some Backdoor.Oldrea samples use standard Base64 + bzip2... gh0st RAT has used Zlib to compress C2 communications data before encrypting it... HOPLIGHT has utilized Zlib compression to obfuscate the communications payload.

T1071Application Layer ProtocolEvidence1

infoClient is responsible for collecting OS info, submitting this info to its C&C servers... Communication with the C&C server after the exchange of OS packet info... HandlePP::urlRequest (/appleauth/static/cssj/N252394295/widget/auth/app.css)

T1071.001Web ProtocolsEvidence2

The content repeatedly describes threat actors, malware, and campaigns using HTTP and/or HTTPS for command and control, including examples such as BlackEnergy communicating with C2 over HTTP POST requests and many other families using HTTP/S for C2.

T1095Non-Application Layer ProtocolEvidence1

Like older versions of the OceanLotus backdoor, the new version contains two main functions: one for collecting operating system information and submitting this to its malicious C&C servers and receiving additional C&C communication information, and another for the backdoor capabilities.

T1105Ingress Tool TransferEvidence1

Both create one thread, and each thread is responsible for either downloading and executing the file or running a command line program in the terminal... Commands used in uploading and downloading file

Exfiltration

1 technique
T1041Exfiltration Over C2 ChannelEvidence3

Many entries state malware or actors can upload, transfer, send, or exfiltrate files from compromised hosts to command-and-control servers or attacker infrastructure.

What this page doesn’t show

The version that knows your environment.

This page is what’s public. Mallory adds the parts that aren’t: which of your assets match these IOCs, which detections are missing, which campaigns to expect next, and what to do in the next 30 minutes.
IOC matching

Match every observed IP, domain, and hash against your live telemetry.

Threat actor attribution1

Named campaigns wielding this family, with evidence pinned to each claim.

Exploited vulnerabilities

CVEs this family uses for access and lateral movement.

Detection signatures

YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.

MITRE ATT&CK mapping27

Every documented technique, ranked by evidence weight.

Researcher chatter

Reddit, Mastodon, and CTI community discussion around this family.