First observed in 2018, LightSpy is a modular malware family that initially targeted iOS devices in Southern Asia before expanding to Android and macOS platforms. It consists of a downloader, a main executable that manages network communications, and functionality-specific modules, typically implemented as .dylib
files (iOS, macOS) or .apk
files (Android). LightSpy can collect VoIP call recordings, SMS messages, and credential stores, which are then exfiltrated to a command and control (C2) server.[1]
Domain | ID | Name | Use | |
---|---|---|---|---|
Enterprise | T1071 | .001 | Application Layer Protocol: Web Protocols |
LightSpy's C2 communication is performed over WebSockets using the open source library SocketRocket with functionality such as, heartbeat, receiving commands, and updating command status.[2] |
Enterprise | T1123 | Audio Capture |
LightSpy uses Apple's built-in AVFoundation Framework library to capture and manage audio recordings then transform them to JSON blobs for exfiltration.[2] |
|
Enterprise | T1217 | Browser Information Discovery |
To collect data on the host's Wi-Fi connection history, LightSpy reads the |
|
Enterprise | T1555 | .001 | Credentials from Password Stores: Keychain |
LightSpy performs an in-memory keychain query via |
Enterprise | T1480 | Execution Guardrails |
On macOS, LightSpy checks the existence of a process identification number (PID) file, |
|
Enterprise | T1041 | Exfiltration Over C2 Channel |
To exfiltrate data, LightSpy configures each module to send an obfuscated JSON blob to hardcoded URL endpoints or paths aligned to the module name.[2] |
|
Enterprise | T1083 | File and Directory Discovery |
LightSpy uses the |
|
Enterprise | T1105 | Ingress Tool Transfer |
On macOS, LightSpy downloads a |
|
Enterprise | T1046 | Network Service Discovery |
To collect data on the host's Wi-Fi connection history, LightSpy reads the |
|
Enterprise | T1027 | .001 | Obfuscated Files or Information: Binary Padding |
LightSpy's configuration file is appended to the end of the binary. For example, the last |
.013 | Obfuscated Files or Information: Encrypted/Encoded File |
LightSpy encrypts the C2 configuration file using AES with a static key, while the module |
||
Enterprise | T1057 | Process Discovery |
If sent the command |
|
Enterprise | T1113 | Screen Capture |
LightSpy uses Apple's built-in AVFoundation Framework library to access the user's camera and screen. It uses the |
|
Enterprise | T1129 | Shared Modules |
LightSpy's main executable and module |
|
Enterprise | T1518 | Software Discovery |
If sent the command |
|
Enterprise | T1082 | System Information Discovery |
LightSpy's second stage implant uses the |
|
Mobile | T1437 | .001 | Application Layer Protocol: Web Protocols |
LightSpy has used both HTTPS and Websockets to communicate with the C2.[3][4][5] |
Mobile | T1532 | Archive Collected Data |
LightSpy collects and compresses data to be exfiltrated using SSZipArchive.[5][4] |
|
Mobile | T1429 | Audio Capture |
LightSpy has captured environment audio, phone calls and Voice over IP (VoIP) calls.[6][1][3][4][5] |
|
Mobile | T1398 | Boot or Logon Initialization Scripts |
LightSpy has established auto-start execution during the system boot process.[4] |
|
Mobile | T1623 | Command and Scripting Interpreter |
LightSpy has plugins for executing shell commands either from the C2 server or a library file called |
|
Mobile | T1634 | .001 | Credentials from Password Store: Keychain |
LightSpy has accessed the device’s KeyChain data.[1][4][7][5] |
Mobile | T1662 | Data Destruction |
LightSpy has deleted media files and messenger-related files on the device.[4] Additionally, LightSpy has used the AppDelete plugin to remove multiple messaging applications, such as WeChat, QQ, Telegram, Line and Whatsapp.[5] |
|
Mobile | T1533 | Data from Local System |
LightSpy has collected and exfiltrated files from messaging applications, such as Telegram, QQ, WeChat, and Whatsapp, and browser history from Chrome and Safari.[1][3][4][7][5] |
|
Mobile | T1456 | Drive-By Compromise |
LightSpy gains initial execution when a victim visits a compromised or adversary-controlled website, including those mimicking legitimate sources such as a Hong Kong newspaper. Upon loading |
|
Mobile | T1642 | Endpoint Denial of Service |
LightSpy has used the DeleteSpring plugin to render the device’s user interface inoperable.[5] LightSpy has prevented the victim device from booting by modifying the NVRAM parameter |
|
Mobile | T1646 | Exfiltration Over C2 Channel | ||
Mobile | T1658 | Exploitation for Client Execution |
LightSpy has compromised iPhones running iOS 12.1 and 12.2 without any user interaction.[7] |
|
Mobile | T1404 | Exploitation for Privilege Escalation |
LightSpy uses the embedded |
|
Mobile | T1544 | Ingress Tool Transfer |
LightSpy has retrieved files from the C2 server.[1][4] Examples of files from the C2 are |
|
Mobile | T1430 | Location Tracking |
LightSpy has accessed the device’s GPS location.[1][3][7][5] |
|
Mobile | T1655 | Masquerading |
LightSpy has masqueraded a Mach-O executable as a png file.[4][5] |
|
Mobile | T1575 | Native API |
LightSpy's main executable and modules use native libraries to execute targeted functionality.[3][1][5][4] |
|
Mobile | T1423 | Network Service Scanning |
LightSpy uses the |
|
Mobile | T1509 | Non-Standard Port |
LightSpy has communicated with the C2 using ports 52202, 51200, 43201, 43202, 43203, and 21202.[3] |
|
Mobile | T1406 | Obfuscated Files or Information |
Using an XOR-chain algorithm, LightSpy decrypts an embedded configuration blob containing URLs for jailbreak components and next-stage payloads. It also decrypts modules in memory and on disk using AES-ECB with the hardcoded key |
|
Mobile | T1660 | Phishing |
LightSpy has delivered malicious links through Telegram channels and Instagram posts.[6][7] |
|
Mobile | T1424 | Process Discovery | ||
Mobile | T1631 | Process Injection |
LightSpy injects libcynject.dylib into the SpringBoard process to enable audio/video recording.[5] |
|
Mobile | T1636 | .002 | Protected User Data: Call Log | |
.003 | Protected User Data: Contact List |
LightSpy has accessed the device’s contact list.[1][3][4][7][5] |
||
.004 | Protected User Data: SMS Messages | |||
Mobile | T1513 | Screen Capture | ||
Mobile | T1582 | SMS Control | ||
Mobile | T1418 | Software Discovery |
LightSpy has accessed a list of installed applications.[1][3][4][5] |
|
Mobile | T1409 | Stored Application Data |
LightSpy has collected payment history from WeChat Pay.[1][3][5] |
|
Mobile | T1426 | System Information Discovery |
LightSpy collects device information, including the phone number, IMEI, CPU details, screen specifications, and memory information.[5][4][3][1] |
|
Mobile | T1422 | System Network Configuration Discovery |
LightSpy has collected device information such as IMEI, phone number, MAC address and IP address.[5] |
|
.002 | Wi-Fi Discovery |
LightSpy uses the WifiList (or |
||
Mobile | T1421 | System Network Connections Discovery |
LightSpy has collected a list of cellular networks and connected Wi-Fi history using a LAN scanner based on MMLanScan.[6][1][3][4][7] |
|
Mobile | T1512 | Video Capture |
LightSpy has the ability to take one picture, continuous pictures or event-related pictures using the device’s camera.[6][1][3][4][5] For iOS devices, the default file type for pictures is in High Efficiency Image Format (HEIC); for Android devices, the default file type for pictures is in JPEG format. |