Win32/Rustock is a multi-component family of rootkit-enabled backdoor trojans, which were historically developed to aid in the distribution of 'spam' e-mail. First discovered sometime in early 2006, Rustock has evolved to become a prevalent and pervasive threat. Recent variants appear to be associated with the incidence of rogue security programs.
Normally the trojan consists of 3 components which are embedded within each other - the dropper (which runs in user mode), the driver's installer, and the actual rootkit driver, (both of which run in kernel mode). All of the trojan’s components are encrypted, and the actual driver component is also packed with plib.
When executed the dropper checks if the rootkit is already active. There are a number of global events which Rustock uses to determine whether it is already present. We have observed it setting the following:
(Note that this list is not exhaustive.)
The dropper facilitates updates and the deployment of the rootkit’s driver installer. The installer is first decrypted, and then dropped and loaded as a system driver. The rootkit’s dropper might attempt to disguise the driver’s installer as a legitimate, but rarely used, system driver.
For instance: Rustock may stop the “beep” service or “null” driver using Service Control Manager (SCM), overwrite <system folder>\drivers\beep.sys or null.sys with the rootkit loader, and then reload the “beep” or “null” drivers. If unsuccessful, the file name of the dropped installer will normally be either hardcoded or randomly generated (depending on the Rustock variant), as in the examples listed below:
glaide32.sys - hardcoded
lzx32.sys - hardcoded
7005d59.sys - randomly generated
Some Rustock variants drop the installer using the \\127.0.0.1\admin$\system32\drivers\<drivers name.sys> path, attempting to further complicate real-time rootkit identification and detection. Earlier variants of the Rustock family also used alternative streams to store the installer (for example System32:lzx32.sys) but this technique was dropped in favor of the stealth mechanism provided by system services hooking.
The registry is set to reflect the presence of the rootkit driver installer on the system. For example, if the driver installer is 7005d59.sys, thye following modifications would be made under the following registry entry:
the following keys are set:
ImagePath = \SystemRoot\System32\drivers\7005d59.sys
Type = 1
Start = 1
ErrorControl = 1
Once the driver installer is loaded it launches the rootkit driver. The rootkit installer decrypts and then decompresses the actual code of the rootkit driver (the driver’s code is packed with aplib), injects the copy of the driver into itself, and transfers execution to the code of the rootkit driver. Such complexity is aimed at further complicating the detection and analysis of this rootkit.
The rootkit driver hooks system functions to further hide itself and the components of the rootkit from detection. The driver checks for the presence of the global event to check if an instance of the rootkit is running, and creates one if it doesn’t already exist.
The driver patches the System Service Dispatch Table (SSDT), hooking the events ZwCreateEvent, ZwCreateKey, and ZwOpenKey. This makes it possible for the driver to filter requests containing the driver’s name and return STATUS_UNSUCCESSFUL if matched, ultimately avoiding detection by AV and other monitoring software.
In an attempt to further hide the network and disk I/O operations as well as its functional activity, the driver hooks the set of ntoskrnl.exe and ntdll.dll API’s and communicates directly with NTFS and TCP/IP devices such as NTFS, IP, TCP, Udp, RawIP and IPMULTICAST.
Analysis by Oleg Petrovsky and Alexey Polyakov
Take the following steps to help prevent infection on your computer:
Enable a firewall on your computer.
Get the latest computer updates for all your installed software.
Use up-to-date antivirus software.
Limit user privileges on the computer.
Use caution when opening attachments and accepting file transfers.
Use caution when clicking on links to Web pages.
Avoid downloading pirated software.
Protect yourself against social engineering attacks.
Use strong passwords.
Enable a firewall on your computer
Use a third-party firewall product or turn on the Microsoft Windows Internet Connection Firewall.
Get the latest computer updates
Updates help protect your computer from viruses, worms, and other threats as they are discovered. It is important to install updates for all the software that is installed in your computer. These are usually available from vendor Web sites.
You can use the Automatic Updates feature in Windows to automatically download future Microsoft security updates while your computer is on and connected to the Internet.
Use up-to-date antivirus software
Limit user privileges on the computer
Starting with Windows Vista and Windows 7, Microsoft introduced User Account Control (UAC), which, when enabled, allowed users to run with least user privileges. This scenario limits the possibility of attacks by malware and other threats that require administrative privileges to run.
You can configure UAC in your computer to meet your preferences:
Use caution when opening attachments and accepting file transfers
Exercise caution with e-mail and attachments received from unknown sources, or received unexpectedly from known sources. Use extreme caution when accepting file transfers from known or unknown sources.
Use caution when clicking on links to Web pages
Exercise caution with links to Web pages that you receive from unknown sources, especially if the links are to a Web page that you are not familiar with, unsure of the destination of, or suspicious of. Malicious software may be installed in your computer simply by visiting a Web page with harmful content.
Avoid downloading pirated software
Threats may also be bundled with software and files that are available for download on various torrent sites. Downloading "cracked" or "pirated" software from these sites carries not only the risk of being infected with malware, but is also illegal. For more information, see 'The risks of obtaining and using pirated software
Protect yourself from social engineering attacks
While attackers may attempt to exploit vulnerabilities in hardware or software to compromise a computer, they also attempt to exploit vulnerabilities in human behavior to do the same. When an attacker attempts to take advantage of human behavior to persuade the affected user to perform an action of the attacker's choice, it is known as 'social engineering'. Essentially, social engineering is an attack against the human interface of the targeted computer. For more information, see 'What is social engineering?
Use strong passwords
Attackers may try to gain access to your Windows account by guessing your password. It is therefore important that you use a strong password – one that cannot be easily guessed by an attacker. A strong password is one that has at least eight characters, and combines letters, numbers, and symbols. For more information, see http://www.microsoft.com/protect/yourself/password/create.mspx