Sality is a persistent family of file-infecting computer viruses primarily targeting Windows executable files (.exe), which it modifies by appending or inserting malicious code to propagate itself across local drives, shared network resources, and removable media.[1][2] First discovered in 2003, Sality has evolved through numerous variants, incorporating advanced evasion techniques such as polymorphic code changes to avoid antivirus detection, and establishing a decentralized peer-to-peer (P2P) network among infected hosts for command-and-control (C2) communication and malware updates.[3][4]Key functionalities of Sality include downloading additional payloads, such as spyware, keyloggers, or cryptocurrency stealers, and engaging in information theft, including keystroke logging and capturing cached passwords from browsers and applications.[5][6] The malware disables security features on infected systems, like Windows Defender and firewall services, to maintain persistence and facilitate further infections.[7] Its P2P architecture, which relies on supernodes formed by heavily infected machines, enables resilient distribution of updates and binaries without centralized servers, making takedown efforts challenging.[4]Attribution points to an eCrime group known as SALTY SPIDER, believed to operate from Russia's Republic of Bashkortostan, which has leveraged Sality for financial gain through botnet monetization and data exfiltration since the malware's discovery in 2003.[8] Despite mitigation efforts by cybersecurity firms, Sality remains a prevalent threat as of 2025, with a resurgence in 2024 and ongoing variants detected in the wild, underscoring its adaptability and long-term impact on global cybersecurity.[3][9][10]
History and Discovery
Initial Discovery
Sality was first publicly documented in June 2003 by Symantec security researchers, marking its emergence as a malware threat.[4] Kaspersky Lab reported detecting the virus shortly thereafter in July 2003, classifying it within their threat database as an infectious agent targeting Windows systems.[11]In its debut form, Sality functioned as a basic file-infector aimed at Windows Portable Executable (PE) files, especially those with the .EXE extension.[4] The malware prepended its UPX-compressed code to host files, altering their structure without initially employing sophisticated evasion methods.[4] Its payload featured rudimentary data theft capabilities, including a keylogger component that captured passwords from the Windows registry and dial-up configurations, which were then transmitted to attacker-controlled Russian SMTP servers.[4]The virus's early dissemination centered in Eastern Europe, with Russia as a primary hotspot, facilitated by the sharing of infected executables across network drives and through downloads from compromised or unverified sources.[4] Initial antivirus signatures identified variants under names like Virus.Win32.Sality.A, highlighting its classification as a parasitic Windows virus from the outset.[11]
Evolution of Variants
Sality's evolution began with early variants that enhanced its propagation capabilities. Between 2006 and 2008, updates introduced worm-like features, allowing the malware to replicate across network shares in addition to file infection.[4] Variants such as Sality.B, detected around December 2006, incorporated these mechanisms alongside entry point obscuration techniques to complicate detection.[12] Subsequent iterations like Sality.C further refined these propagation methods, enabling broader spread on local and shared drives.[1]By 2010, Sality underwent a significant shift with the integration of peer-to-peer (P2P) botnet functionality for command-and-control operations, marking the emergence of versions 3 and 4.[13] These versions, active since approximately 2009, allowed infected systems to form decentralized networks resistant to traditional takedown efforts; communications within the P2P network utilized digitally signed files and commands to prevent tampering.[13][4]Rootkit capabilities were also incorporated around this period, enabling kernel-level persistence and hiding from security tools.[1]From 2015 to 2020, developers enhanced evasion tactics with advanced rootkit modules refined for deeper system integration, maintaining Sality's relevance amid evolving antivirus measures.[1]Sality experienced a resurgence in 2022, with campaigns targeting industrialcontrol systems (ICS) through tainted password recovery tools for programmable logic controllers.[14] Activity persisted into 2024, as evidenced by ongoing tracking of variants in cybersecurity analyses.[3] By the first half of 2025, Sality remained a notable threat in malware landscapes, contributing to botnet operations.[10]Key to Sality's longevity are its continuous polymorphism, which mutates code to evade detection, and the decentralized P2P structure, which has thwarted complete botnet disruptions.[1][13]
Technical Overview
Aliases and Family Classification
Sality is known by several primary aliases in cybersecurity literature and detection databases, including Virus.Win32/Sality, W32/Sality, SalLoad, Kookoo, SaliCode, and Kukacka.[1][8][15] These names reflect variations in how different security vendors and researchers have labeled the threat based on its behaviors and code characteristics.The malwarefamily is classified as a polymorphic file-infector virus that incorporates worm-like propagation and Trojan functionalities, enabling it to form resilient peer-to-peer (P2P) botnets for command-and-control operations.[1] This hybridnature places Sality within broader malware taxonomies as botnet-enabling software, often associated with eCrime actors for tasks like spamdistribution and datatheft.[8]Sality encompasses numerous variants, with antivirus firms documenting over 100 distinct strains such as Sality.AT, Sality.AM, and Sality.AU, distinguished by subtle code modifications and payload differences.[16] These are broadly grouped into P2Pbotnet families corresponding to versions 3.x (active since around 2009) and 4.x, which emphasize decentralized communication to evade takedowns.[17][13]Detection signatures vary by vendor but consistently target the family's coreinfection patterns. Microsoft employs the genericpattern Virus:Win32/Sality.*, capturing a wide range of infections.[16]Symantec identifies it as W32.Sality, focusing on its file-modifying and network behaviors.[4] Kaspersky uses Virus.Win32.Sality for its polymorphic executable targeting.[18]
Core Infection Mechanisms
Sality employs a polymorphic engine to mutate its code during infection, incorporating encryption and the insertion of junk instructions to evade signature-based antivirus detection. This engine, such as the "Simple Poly Engine v1.1a," generates variable decryption stubs that append the viralbody to the end of the host file's last section, ensuring the original file structure remains largely intact while altering the malware's appearance across infections.[4][19]To obscure its entry point and avoid detection through file integrity checks, Sality uses entry-point obscuring (EPO) techniques that preserve the host's original entry-point address. Instead of directly overwriting the entry point, it inserts a polymorphic stub—often an obfuscated jumpinstruction, such as a "jmp reg" redirected via registerindirection—that executes the virusbody before seamlessly transferring control back to the legitimate code, maintaining host functionality.[19][1]Upon execution, Sality initiates installation by injecting its code into running processes, excluding those under system accounts, and using synchronization mutexes like "uxJLpe1m" to prevent concurrent infections. It drops a malicious DLL, such as wmdrtc32.dll, into the %SYSTEM% directory and injects it into memory for immediate execution, while also loading a kernel-mode driver like amsint32.sys into %System%\drivers to establish deeper persistence. Registry modifications follow, including entries in HKLM\Software[Microsoft](/page/Microsoft)\Windows\CurrentVersion\Run to autorun the DLL on startup and alterations to HKLM[SYSTEM](/page/System)\CurrentControlSet[Control](/page/Control)\SafeBoot to ensure loading even in safe mode.[20][19][4]Later variants of Sality incorporate rootkit capabilities to hide its presence and activities on the host. The amsint32 driver performs SSDT (System Service Descriptor Table) hooking, intercepting calls like NtTerminateProcess to terminate antivirus processes and conceal malicious files or running instances from system queries. This driver also creates a symbolic link device named \Device\amsint32 for kernel-level communication, enabling file and process hiding while filtering network traffic to block access to security vendor domains.[20][21][4]Sality primarily targets executable files with .EXE and .SCR extensions, infecting them by appending its polymorphic code to the last section or, in some cases, overwriting sections while preserving the host's operational integrity. It avoids infecting files associated with security software by overwriting them with harmless byte sequences like "CC C3 CC C3" to neutralize threats without full propagation.[1][4][19]
Propagation Strategies
File Infection Process
Sality targets executable files on local drives, primarily scanning starting from the C: drive and traversing all available disk drives except CD-ROMs. It searches for files with .EXE or .SCR extensions that fall within a size range of approximately 512 bytes to 40 MB, excluding protected system files via checks like the SfcIsFileProtected API to avoid detection or disruption. The scanning process is multi-threaded, using APIs such as FindFirstFileA and FindNextFileA to traverse folders alphabetically from the root directory, ensuring efficient coverage of the file system while one thread handles the infection routine.[22][16]Upon identifying a suitable non-infected target, Sality appends an encrypted viral body—typically around 70 KB in size—to the end of the host file. It then modifies the Portable Executable (PE) header, adjusting the last section's characteristics to include executable, readable, and writable permissions, while updating fields like VirtualSize and SizeOfRawData to accommodate the addition. To redirect execution, the virus employs entry-point obscuring (EPO) techniques, inserting a jump in the host's code that leads to a decryptor routine in the appended section; this decryptor unpacks the viral code and transfers control back to the original entry point, allowing the infected file to function normally. This polymorphic approach, where the viral code mutates with each infection, enhances stealth by varying the decryptor and insertion points.[22][23]For self-protection, Sality marks infected files with specific indicators, such as setting a non-zero value in the 'NumberOfLineNumbers' field (at offset 0x22 in the section header) and zeroing the CRCchecksum (at offset 0x58 in the PE header), preventing re-infection during subsequent scans. These markers allow the virus to quickly skip already compromised files, optimizing its propagation within the system. Infected hosts preserve original file timestamps and attributes to evade suspicion, though the added code can increase file size noticeably and potentially degrade performance due to the overhead of decryption and execution redirection.[22]Early variants of Sality relied on straightforward appending methods with basic PE modifications for infection. Later variants introduced more advanced stealth measures, such as cave insertion—exploiting unused spaces (caves) within the PE file structure—and enhanced EPO to obscure the jump to viral code, making detection by signature-based tools more challenging. These evolutions reflect Sality's ongoing adaptation to antivirus countermeasures while maintaining its core file-infection strategy.[24][1]
Network and Removable Media Spread
Sality propagates via removable media by copying itself to USB drives and other external storage devices, disguising the malicious payload as seemingly innocuous files such as those with .exe, .pif, or .cmd extensions, often mimicking legitimate applications like Windows Calculator or Minesweeper with randomized names.[24][4] To facilitate automatic execution upon insertion of the drive into another system, it creates or modifies an autorun.inf file in the root directory, which points to the infected file and triggers its launch without user intervention.[25]For network-based spread, Sality enumerates accessible network resources, including mapped drives and SMB shares, to identify potential targets for infection.[4] It then attempts to copy infected files to these locations for subsequent execution on remote systems.[4] To evade detection during this process, Sality implements rate limiting by introducing delays between propagation attempts, which reduces network anomalies that might alert security tools.[4]In variants observed since 2022, Sality has adopted tactics tailored to industrial control systems (ICS), bundling its payload with legitimate-appearing password-cracking tools designed for programmable logic controllers (PLCs) and human-machine interfaces (HMIs) from vendors like Automation Direct, Siemens, and Mitsubishi.[26] These tools, promoted via social media ads targeting industrial engineers, exploit serial or Ethernet connections to extract device passwords while simultaneously deploying Sality, which then spreads further through the ICS environment via network shares and removable media, potentially compromising operational technology assets.[26] This approach enhances initial infection rates in air-gapped or segmented ICS networks by exploiting trust in utility software.[26] These propagation strategies continue to be observed in active variants as of 2025.[10]
Payload and Capabilities
Immediate System Modifications
Upon execution, Sality initiates security evasion measures by terminating active antivirus and security-related processes to prevent detection and removal. It targets processes such as avp.exe (Kaspersky), avastsvc.exe (Avast), mcafee.exe (McAfee), and nod32.exe (ESET), among others like AVPM, A2GUARD, and ALG, using a dedicated kerneldriver for forceful termination.[4][27][24] Additionally, it deletes or overwrites antivirus database files, including those with extensions like .vdb, .avc, and .qdb, to impair scanning capabilities and hinder real-timeprotection.[4][16]Sality further compromises system integrity through targeted registry alterations that disable critical Windows services and security features. It modifies keys under HKLM\SYSTEM\CurrentControlSet\Services to stop or disable services such as Windows Defender and Task Scheduler, while also deleting entries like HKLM\System\CurrentControlSet\Control\Safeboot to prevent safe mode booting.[27][4] Other changes include setting values to block access to tools like Task Manager and Registry Editor (e.g., HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr=1) and suppressing antivirus notifications (e.g., HKLM\SOFTWARE\Microsoft\Security Center\FirewallDisableNotify=1).[24] These alterations collectively lower the system's defensive posture by neutralizing built-in protections.To maintain stealth and persistence, Sality performs file system modifications that disrupt forensic recovery and operational safeguards. It deletes temporary executable files in user directories (e.g., %User Temp%.exe) and overwrites security-related files with patterns like "CC C3 CC C3 CC C3 CC C3" to render them unusable.[27][4] The malware also injects obfuscated code into running processes, including explorer.exe, using mutexes (e.g., "M__") to avoid multiple instances, thereby embedding itself in legitimate system operations without creating new suspicious executables.[4][24]Variant evolution influences the scope of these modifications, with earlier versions emphasizing antivirus neutralization. Pre-2010 variants, such as those from 2006 (e.g., v3.09), primarily focus on process termination and basic service disruption using hardcoded security targets.[4] Post-2010 variants, including V4 implementations from late 2010 onward, expand evasion by explicitly disabling firewalls (e.g., via registry changes to Windows Firewall settings) and incorporating advanced rootkit-like behaviors for deeper system integration.[4][24]
Botnet and Advanced Functions
Sality employs a decentralized peer-to-peer (P2P) botnetarchitecture that eliminates reliance on central command-and-control (C2) servers, enabling resilient communication among infected hosts.[28] The network operates as an unstructured, pull-based system where bots periodically exchange information with peers to propagate commands and updates.[28] This design allows the botnet to distribute tasks such as malware updates without a single point of failure, enhancing its persistence against takedown efforts.[16]Bots connect to the P2P network using a customprotocol primarily over UDP for efficient signaling and peer discovery, with TCP introduced in later versions for secure file exchanges on ports offset from the UDP port (e.g., UDP port + 19).[28] Upon infection, a host joins the network via a bootstrap list of known peers, up to 1,000 entries, and participates in gossip-based message propagation to share tasks and maintain connectivity.[28] This peer-to-peer coordination enables distributed operations, where individual bots relay commands received from other nodes acting as implicit C2 points.[29]The botnet supports several advanced malicious functions coordinated through the P2P structure. Infected systems can serve as spam relays, distributing bulkemail campaigns as directed by peer-exchanged commands.[30]Credential theft modules capture authenticationdata, including FTP passwords stored on the system, facilitating unauthorized access to remote services.[29] Additionally, bots participate in distributed denial-of-service (DDoS) attacks, leveraging the network's scale to overwhelm targets with traffic from multiple compromised hosts.[29]A key component is the downloader module, which retrieves URLs for additional malware from P2P peers and executes them, such as ransomware or other payloads like Win32/RBrute variants.[16][29] For data exfiltration, bots collect sensitive information—including browser-stored credentials and systemdetails—and transmit it to designated peers, often every two minutes, to support further criminal activities.[30][29] Transmissions are secured using digital signatures, with RSA-1024 in version 3.x and RSA-2048 in version 4.x, ensuring only verified modules are processed.[28]At its peak, the Sality botnet encompassed over one million infected nodes, with version 3.x exhibiting the largest footprint of approximately 912,000 active systems based on global sensor data.[28] Version 3.x, introduced around 2008, relied on unsigned URL packs vulnerable to manipulation, while version 4.x, released in late 2010, incorporated signed binaries for executables to establish trust and mitigate such exploits.[28] This evolution maintained the botnet's operational scale into the mid-2010s, with over 115,000 super peers identified in analyses.[29] As of 2025, Sality continues to leverage these capabilities, with a noted resurgence in activity for distributing additional malware and maintaining botnet operations.[10][3]
Detection and Mitigation
Identification Techniques
Signature-based detection of Sality primarily employs heuristics to identify polymorphic stubs, such as characteristic decryption routines embedded in infected executables, due to the malware's code obfuscation techniques that alter signatures across variants.[1] Antivirus solutions like MicrosoftDefenderscan for and flag infections under names such as Virus:Win32/Sality or its variants, leveraging pattern matching against known viral code structures despite mutations.[5] Similarly, Kaspersky products detect Sality as Virus.Win32.Sality in various forms, incorporating heuristic analysis to counter the malware's entry point obscuration (EPO) methods that hide its presence in host files.[11]Behavioral indicators provide key clues for identifying Sality infections, including unusual modifications to executable files on local, network-shared, or removable drives, where the virus prepends or appends polymorphic code to .EXE and .SCR files.[1] Systems may exhibit disabled security services, such as terminated antivirus processes or altered firewall settings to permit outbound connections, alongside elevated network activity like high volumes of UDP traffic to random ports for peer-to-peer (P2P) botnet coordination.[5] These patterns, including attempts to steal sensitive data or download additional payloads, distinguish Sality from benign operations.[1]Practical tools aid in confirming Sality presence through targeted scans, such as bootable rescue disks that operate outside the infected OS to evade rootkit hiding mechanisms; for instance, the Kaspersky Rescue Disk performs offline malware scans capable of identifying Sality variants by bypassing active system modifications.[31] Network monitoring with tools like Wireshark can reveal anomalous P2P connections, characterized by Sality's UDP-based communication mimicking but deviating from standard protocols like those in BitTorrent.[13]Advanced detection techniques include YARA rules designed to match rootkit hooks implemented in later Sality variants, which conceal files, processes, and registry entries to maintain persistence.[32] Additionally, machine learning models analyze file entropy anomalies, where Sality's polymorphic encryption results in unusually high randomness scores compared to legitimate executables, enabling proactive identification of obfuscated infections.[33]Detecting Sality poses challenges stemming from its polymorphism, necessitating generic heuristic and behavioral approaches over rigid signatures to capture evolving variants.[1] Furthermore, behavioral monitoring risks false positives from legitimate P2P applications generating similar UDP traffic patterns, requiring contextual analysis to differentiate malicious botnet activity.[13]
Removal and Recovery Steps
Removing Sality infections requires booting into a clean environment to avoid interference from the malware's rootkit components and persistence mechanisms. Users should start by creating a bootable USB with a trusted rescue environment, such as Windows PE or a Linux live distribution like Ubuntu, to isolate the system from the infected OS.[34] Once booted, perform a full antivirus scan using offline tools like ESET SysRescue or Malwarebytes, which can detect and quarantine infected executable files across all drives.[35] For automated assistance, deploy specialized fix tools such as Trend Micro's PE_SALITY removal utility, which involves downloading the tool, extracting it to a temporary directory, and executing the batch file to clean the system before rebooting.[36]To handle Sality's persistence, target its embedded components in the registry and file system using comprehensive scanning tools. For older variants, delete suspicious DLL files such as wmdrtc32.dll and wmdrtc32.dl_ if present in the %System% directory, but note that recent variants load components in memory without disk writes, requiring memory scanning and process termination via tools like Autoruns from Sysinternals.[5][37] Remove associated registry keys that vary by variant, such as those under HKEY_LOCAL_MACHINE\SYSTEM\ControlSet00*\Services\amsint32 or HKEY_CURRENT_USER\Software\Qurdk for specific older infections, via regedit.exe or Autoruns to identify and disable malicious startup entries.[38] Additionally, scan for and eliminate autorun.inf files on fixed and removable drives to prevent reactivation. After cleanup, re-enable disabled security services, such as Windows Defender, by restoring them through the Services console or registry backups if available.[34]Network cleanup is essential to isolate the infection and prevent reinfection. Disconnect the system from any network shares or the internet immediately to block botnet callbacks, then scan all connected removable media (e.g., USB drives) using the same offline tools to remove any propagated copies.[36] Monitor outbound traffic post-removal with network monitoring software to detect any residual command-and-control communications, and apply firewall rules to block known Sality domains if identified during scanning.For recovery, severe infections—particularly those involving widespread file corruption—warrant a full system reformat and clean reinstallation of the operating system to ensure complete eradication, followed by immediate updates to all software and antivirus definitions.[39] In less critical cases, restore from clean backups after verification, and enable features like USB autorun blocking and behavior monitoring to prevent future incidents.[36]Recent Sality activity includes a 2022campaign targeting industrialcontrol systems (ICS), where the malware was distributed via legitimate-appearing passwordrecovery tools for programmable logic controllers (PLCs) from vendors like AutomationDirect and Siemens, exploiting vulnerabilities to inject the trojan and expand the botnet.[26] This evolution was linked to the SALTY SPIDER eCrime group, a Russian-based actor operating the Sality botnet since at least 2003, with a major resurgence in 2024 leading to top-tier prevalence in H1 2025 analyses.[8][10][40]