A VBR bootkit designed to block the Internet access and display a specially generated web page in the browser prompting the user to subscribe to some service.
Before launching an attack on a compromised computer, the dropper checks the infection status; that is, if the HKLM\Software\Classes\CLSID sub-tree does not contain a relevant key, the bootkit proceeds to infect the computer.
While infecting computers with Windows Vista and Windows 7 operating systems, the Trojan attempts to acquire higher privileges by constantly relaunching itself. The dropper contains not only the 32-bit driver but also the 64-bit driver responsible for the future loading of the Trojan’s main functionality. Depending on the bitness of the operating system, a corresponding driver is saved on the disk. It can be added either to the beginning of the disk (prior to the first active partition) if there is enough space or to its end.
Then the Trojan infects the VBR (Volume Boot Record). Trojan.Mayachok.2 aborts the infection process if the partition’s file system is different from NTFS. By analyzing the boot record, the Trojan searches for a place to be installed and rewrites the code that resides there. The original code is compressed using the APLIB library (http://www.ibsensoftware.com) and is added after the virus code. The number of the starting sector and its size are also added to the VBR.
Once the virus loader gains control, it reserves some memory space, places itself there and intercepts interrupt 13h to view the contents of the sectors read from the disk. Then the malware loads its driver from the disk and unpacks the original VBR code to the initial place. The system loader gets control back.
Next, depending on the loader used by the system, the sequence of setting/clearing intercepts in the downloadable modules (ntldr, bootmgr, osloader.exe, winload.exe, and so on) is carried out. It should be noted that apart from ordinary intercepts (splicing) for key bridges, machine debug registers (dr0-dr7) and code tracing (step into) are used.
Virus driver output point is called twice. This is caused by the close interaction between the infected VBR and the driver. Since the virus VBR code is just 2,078 bytes in size, the virus makers embedded part of its malicious features into the driver’s body. Once the driver is launched for the first time, it adds itself to the following lists in LOADER_PARAMETER_BLOCK: to LoadOrderList as the first module’s copy (operating system kernel) and to BootDriverList as a boot driver supposedly written in \Registry\Machine\System\CurrentControlSet\Services\null. Thus, the malware imitates the booting of an ordinary boot driver.
Next time the driver is launched by the system, it is considered to be booted by the system itself. The purpose of the driver is to inject its code into the running processes. The code injection is carried out by setting the notifications using PsCreateProcessNotifyRoutine and PsCreateProcessNotifyRoutine features with the further call of an asynchronous function via the APC mechanism. After injecting itself into the browsers processes (Microsoft Internet Explorer, Mozilla Forefox, Opera, Google Chrome, and other browsers are supported), the malicious module blocks their normal work and displays the contents generated by cybercriminals.