By Marco Giuliani
In the past few weeks a Chinese security company called Qihoo 360 blogged about a new BIOS rootkit hitting Chinese computers. This turned to be a very interesting discovery as it appears to be the first real malware targeting system BIOS since a well-known proof of concept called IceLord in 2007. The malware is called Mebromi and contains a bit of everything: a BIOS rootkit specifically targeting Award BIOS, a MBR rootkit, a kernel mode rootkit, a PE file infector and a Trojan downloader. At this time, Mebromi is not designed to infect 64-bit operating system and it is not able to infect the system if run with limited privileges.
The infection starts with a small encrypted dropper that contains five crypted resource files: hook.rom, flash.dll, cbrom.exe, my.sys, bios.sys. The goal of these files will be presented later in this analysis.
The infection is clearly focused on Chinese users, because the dropper is carefully checking if the system it’s going to infect is protected by Chinese security software Rising Antivirus and Jiangmin KV Antivirus. To gain access to the BIOS, the infection first needs to get loaded in kernel mode so that it can handle with physical memory instead of virtual memory.
Many of you may recall the old CIH/Chernobyl infection, the infamous virus discovered in 1998 that was able to flash the motherboard BIOS, erasing it. Even CIH needed to gain kernel mode access to reach the BIOS, though at the time the virus was exploiting a privilege escalation bug in Windows 9x operating system which allowed it to overwrite the Interrupt Descriptor Table with its own payload from user mode, then triggering the overwritten interrupt handler and its malicious code is executed in kernel mode. Mebromi does not use such kind of privilege escalation trick anymore, it just needs to load its own kernel mode driver which will handle the BIOS infection. To do so, it uses two methods: it could either extract and load the flash.dll library which will load the bios.sys driver, or it stops the beep.sys service key, overwriting the beep.sys driver with its own bios.sys code, restart the service key and restore the original beep.sys code.
The bios.sys driver is the code which handle the BIOS infection. To read the BIOS code, it needs to map the physical memory located at physical memory address 0xF0000, this is where the BIOS ROM usually resides. Once read, the driver verifies if the BIOS ROM is Award BIOS, by checking the presence of the string: $@AWDFLA. If found, the driver tries to locate the SMI port that will be used by the rootkit to flash the BIOS ROM.
If the BIOS ROM matches the string, the rootkit saves a copy of the BIOS to the file C:\bios.bin and pass the next step to the user mode component of the infection. The dropper extracts two files: cbrom.exe and hook.rom. Cbrom.exe is a legitimate tool developed by Phoenix Technologies, used to modify the Award/Phoenix BIOS ROM binaries. Hook.rom is the rootkit ISA BIOS ROM that is added to the BIOS binary, containing the rootkit infection. The dropper executes cbrom.exe with the /isa switch parameter, passing the hook.rom file. Before actually injecting the malicious ISA ROM, the dropper checks the BIOS ROM code looking for the “hook rom” string, used as a marker of the infection. If found, it means that the BIOS is already infected and it doesn’t need to be infected again.
After that the bios.bin file has been modified, the bios.sys driver send to the BIOS SMI port the command 0×29, used to erase the BIOS flash, and then the command 0x2F used to write the new BIOS ROM code to the BIOS ROM.
The BIOS is now infected, and the dropper goes to its next step: infecting the Master Boot Record. The infection is 14 sectors long and the original MBR is stored to the sector 7. To avoid potential startup issues, the infected MBR stores a copy of the original MBR’s partition table. Finally the dropper extracts the my.sys driver on the root of the C: drive. My.sys is a kernel mode rootkit that hijacks disk.sys’s IRP major functions, by redirecting the IRP_MJ_READ/WRITE and IRP_MJ_DEVICE_CONTROL native functions. It is used to hide the infection on the disk. Even if the BIOS infection doesn’t succeed, the rootkit does infect the MBR.
At the next system startup, after the BIOS POST phase, the malicious code injected inside it prepares the full MBR infection (all the first 14 sectors are stored inside the malicious BIOS rom, 7168 bytes in total) and checks the MBR code of the hard drive looking if the infection is already present. To do it, the BIOS malicious code checks for the presence of the string “int1” at the offset 0×92. If the string is not found, the BIOS malicious rom will overwrite all the first 14 sectors of the hard drive, thus restoring the MBR infection.
The system startup procedure continues and the control now passes to the malicious master boot record. Here the malicious payload analyzes the original MBR partition table and looks for the active partition, checking if it’s using a NTFS or FAT32 file system. The malicious MBR code contains indeed NTFS/FAT32 parser routines, used to get inside the file system to look for winlogon.exe or wininit.exe file. When found, the malicious code contains a file infection payload, able to inject malicious code inside the specified file and hijack the entry point of it. Before infecting the file, the MBR malicious code checks if it is already infected, by looking for the string “cnns” at the offset 0×50 from the beginning of the PE file. This is the infection marker. If the string is not found, the infection stores a crypted payload – about 600 bytes of code – inside winlogon.exe or wininit.exe and hijacks the PE entry point to the beginning of it, saving the original entry point at the offset 0×60.
The job of the MBR infection ends here, waiting for the Windows startup which will load the patched executable. When loaded, the payload self-decrypt its malicious code and loads in memory the my.sys driver. Then it tries to download an additional infection from the (now unavailable) URL address: http://dh.3515.info:806/test/91/calc[removed].
The concept behind Mebromi is not new. In fact we must recall the IceLord BIOS rootkit published in 2007, a public proof of concept able to target Award BIOS rom, using an approach very similar to the Mebromi one – or should we say that Mebromi is more than just inspired by the IceLord rootkit?
Storing the malicious code inside the BIOS ROM could actually become more than just a problem for security software, giving the fact that even if an antivirus detect and clean the MBR infection, it will be restored at the next system startup when the malicious BIOS payload would overwrite the MBR code again. Developing an antivirus utility able to clean the BIOS code is a challenge, because it needs to be totally error-proof, to avoid rendering the system unbootable at all. The job of handling with such specific system codes should be left to the developers of the specific motherboard model, who release BIOS updates along with specific tool to update the BIOS code.
On the other hand, although this kind of infection is potentially one of the most persistent infections known out there in the wild, it will hardly become a major threat because of the level of complexity needed to achieve the goal. While a kernel mode infection or a MBR infection could still work in a generic way among all the PC out there – and they still have a huge available free space to play with, a BIOS-based rootkit needs to be fully compatible with all major BIOS rom out there, it should be able to infect all the different releases of Award, Phoenix, AMI BIOS’s out there; a level of complexity that is simply unasked for writing a good persistent infection (e.g. TDL rootkit, various Rustock releases, ZeroAccess rootkit among all). In fact, why is Mebromi only targetting Award BIOS rom? Perhaps because there was already a known proof of concept that is 5 years old targeting Award BIOS ROM available online.
Are BIOS rootkits a real threat? Yes, we can consider Mebromi the first real BIOS rootkit incident discovered in the wild – let’s consider IceLord BIOS rootkit more a proof of concept. Should we be concerned about BIOS rootkits? Well, while we try to discover whether our PC is infected by an unknown and super-stealth BIOS rootkit, let’s try and look if there is a more “humble” kernel mode rootkit which is already infecting our PC, allowing a remote attacker to silently own our system.
3 Comments
brilliant break down, keep us posted on any developments
The statement at the end of the article which states that this kind of infection is hardly a major threat is somewhat erroneous. Considering world-wide mass infections, this method may not be practical. However, what should be evident based on the discussion at the beginning of this article is that this type of malware is extremely focused. The developer is only looking to infect very specific hardware in a specific locale. Most organizations standardize on a partcular hardware vendor. For someone to use this technology to maintain a persistent presence in a particular organization is where this type of malware presents a major threat.
Hello,
you are definitely right, Mebromi could be used for targeted attacks. I’ve actually said that it is a real threat, not just a proof of concept.
With major threat, I mean something that can easily spread worldwide. This is not the case because Mebromi is well focused on specific hardware.
Furthermore, we must say that there are many other examples of threats which have been able to spread and infect thousands of computers without being noticed by security companies for months. We can talk about Rustock rootkit, ZeroAccess rootkit, TDL rootkit, advanced threats working in kernel mode, able to infect computers worldwide, without being restrcited to specific hardware.
We can step back in the past and recall Gromozon, user mode (not even kernel mode) rootkit which has been able to freely spread for at least 5 months before being detected by security products.
All of this just to say that BIOS rootkits are a real threat, actually they could be used for targeted attacks. Though, virus writers don’t really need to focus on BIOS rootkits if they want to write an advanced threat able to stay invisible for all the time needed to steal data from the infected PC or remote control it. They can still do it without the restriction caused by hardware compatibility.
Regards,
Marco
21 Trackbacks/Pingbacks
[...] payload would overwrite the MBR code again,” Webroot researcher Marco Giuliani wrote in a blog post published Tuesday. “Developing an antivirus utility able to clean the BIOS code is a [...]
[...] payload would overwrite the MBR code again,” Webroot researcher Marco Giuliani wrote in a blog post published Tuesday. “Developing an antivirus utility able to clean the BIOS code is a [...]
[...] Webroot, pachetul malitios contine un rootkit de BIOS, un rootkit de MBR, un rootkit al kernelului, un [...]
[...] Webroot Storing the malicious code inside the BIOS ROM could actually become more than just a problem for [...]
[...] in at least four years, Webroot researcher Marco Giuliani, who studied the threat, said in a blog post [...]
[...] Mebromi: the first BIOS rootkit in the wild « Webroot Threat Blog. [...]
[...] full description of the way Mebromi functions was posted on the Webroot Threat Blog, giving us an insight on how this malicious element makes its way to the very core of a [...]
[...] Here comes the first BIOS rootkit Mebromi is the first BIOS rootkit in the wild. Here is the complete article. The malware is called Mebromi and contains a bit of everything: a [...]
[...] [...]
[...] PC è in grado di ri-infettare il sistema. Stando a quanto riportato in questa analisi condotta da Webroot, al momento Mebromi non ha una payload preoccupante e, soprattutto, per diventare una vera minaccia [...]
[...] è in grado di ri-infettare il sistema. Stando a quanto riportato in questa analisi condotta da Webroot, al momento Mebromi non ha una payload preoccupante e, soprattutto, per diventare una vera minaccia [...]
[...] “Even if an anti-virus detects and cleans the MBR infection, it will be restored at the next system startup when the malicious BIOS payload would overwrite the MBR code again,” Marco Giuliani from the security company Webroot wrote. [...]
[...] Son los rootkit de BIOS una amenaza real? Si, consideramos Mebromi el primer incidente real de rootkits de este tipo indica el grupo webroot un blog de amenazas, puede ver mayor detalle sobre el rootkit en sus página webroot [...]
[...] Read all the gory details here. [...]
[...] Data Released – Ballmer: 500,000 Downloads of Windows 8 – YouTube adds a built-in video editor – Mebromi: the first BIOS rootkit in the wild – Firefox for Android tablets makes first appearance – Microsoft to developers: Metro is your [...]
[...] “Even if an anti-virus detects and cleans the MBR infection, it will be restored at the next system startup when the malicious BIOS payload would overwrite the MBR code again,” Marco Giuliani from the security company Webroot wrote. [...]
[...] “Even if an anti-virus detects and cleans the MBR infection, it will be restored at the next system startup when the malicious BIOS payload would overwrite the MBR code again,” Marco Giuliani from the security company Webroot wrote. [...]
[...] article from the past week, titled "Mebromi: the first BIOS rootkit in the wild" http://blog.webroot.com/2011/09/13/m…t-in-the-wild/ I think its safe to say it is possible, although in the past malware which could add its own code [...]
[...] in at least four years, Webroot researcher Marco Giuliani, who studied the threat, said in a blog post [...]
[...] Mebromi: the first BIOS rootkit in the wild « Webroot Threat Blog A BIOS rootkit,a MBR rootkit,a kernel rootkit, a PE file infector and a Trojan downloader, it isn't a malware, sounds like a cyber-weapon. (tags: hacking china Security rootkit malware) [...]
[...] un interesante informe acerca de su actividad. Para lograr su cometido, esta amenaza cuenta con un conjunto de técnicas y herramientas que valen la pena comentar. La infección del sistema es a través de un código malicioso que [...]