Win32/Rustock is a family of rootkit-enabled backdoor trojans used to send large volumes of spam from infected computers. When Backdoor:Win32/Rustock is first run, the user mode installer checks to see if the global atom {DC5E72A0-6D41-47e4-C56D-024587F4523B} exists, the presence of which signifies that another copy of Backdoor:Win32/Rustock.gen!A is already active on the system. If another copy of the trojan exists, the installer portion of the Win32/Rustock trojan exits. If it does not already exist, the Win32/Rustock trojan tries to install a kernel mode driver by attaching itself as an alternate data stream (ADS) to the Windows system folder, for example, %windir%>\System32:lzx32.sys (ADS is supported on all NT-based operating systems). On systems that do not support ADS, the Win32/Rustock trojan drops a file to the <system> folder, registers that file as a service and starts the service when installation is complete. The driver is installed with the following properties:
Type = 1
Start = 1
ImagePath = c:\windows\system32\lzx32.sys or system32:lzx32.sys
DesiredAccess = 10h
DisplayName = Win23 lzx files loader
ServiceName = pe386 or lzx32
Win32/Rustock injects its code into any user mode processes named "explorer". This can enable the Win32/Rustock trojan to bypass policy restrictions and access the Internet. Win32/Rustock gathers system information and collects email addresses from a wide range of file types found on the infected system and attempts to send the collected data via HTTP to 208.66.195.248.
The Win32/Rustock trojan may also download an ICQ chat program. Additionally, in an attempt to bypass Bayesian-type spam filters, the trojan connects to various pre-defined URLs, querying and collecting text from those sites which it uses in the plain text alternate section of email it composes.
Kernel Mode Rootkit
The kernel mode rootkit driver component of Win32/Rustock hides registry keys, files, TCP ports and memory objects. It also hides itself from the applications which contain the following strings: RootkitReveller, BlackLight, Rkdetector, Gmer, Endoscope, DarkSpy, and Anti-rootkit. The driver also looks for "Rustock" and "rootkit" strings within processes and, if found, changes its behavior to avoid detection. In addition, the kernel mode driver creates the global atom {DC5E72A0-6D41-47e4-C56D-024587F4523B} to alert the user mode installer that this driver is already installed.
Backdoor:Win32/Rustock alters the behavior of the following APIs: ZwOpenKey, ZwEnumerateKey, ZwQueryKey, ZwCreateKey, ZwSaveKey, ZwDeviceIoCOntrolFile, ZeInitializeRegistry, ZWQuerySystemInformation, ZwTerminateProcess, and filters these APIs' output if the strings pe386 or lzx32 are detected. It also intercepts and processes IRP_MJ_CREATE and IRP_MJ_QUERY_INFORMATION, and hooks the following drivers in memory: tcpip.sys, wanarp.sys, and ndis.sys.