- Extract BIOS used by VMWare.
- Decompile it.
- Modify.
- Compile.
- Install and use.
So, while searching how to do that I stumbled on PHRACK magazine's article that describes just that, how to infect BIOS. It also describes how to instruct VMWare to stop in BIOS and allow gdb to be attached for BIOS debugging! In the end, it turned out that this topic is well studied already. Here are some interesting resources I found:
- http://www.exfiltrated.com/research.php
- http://www.endeer.cz/bios.tools/bios.html
- https://www.blackhat.com/presentations/bh-usa-07/Heasman/Presentation/bh-usa-07-heasman.pdf
- https://sites.google.com/site/pinczakko/pinczakko-s-guide-to-ami-bios-reverse-engineering-1
- http://stackoverflow.com/questions/1737095/how-do-i-disassemble-raw-x86-code
- http://duartes.org/gustavo/blog/post/how-computers-boot-up/
- http://duartes.org/gustavo/blog/post/motherboard-chipsets-memory-map/
- PHRACK: Persistent BIOS infection
- https://www.bios-mods.com/downloads/
- https://www.kraxel.org/repos/
- https://www.kraxel.org/blog/
- https://www.wimsbios.com/forum/depth-high-tech-bios-section-f37/
Lately, UEFI is much more interesting to experiment with because gradually all the manufacturers are switching from old BIOS to a new boot method that has additional protections. It turns out that VMWare Workstation, starting with version 8 supports UEFI boot, too. All that is necessary is to add the following line to vmx configuration file of a virtual machine:
firmware="efi"
So, this is a great research and learning opportunity. Yet, it is very hard to find information on how to manipulate UEFI BIOS. One reason might be that it is relatively new and not many people know what it does and how it works.
While searching for information on how to infect and manipulate UEFI, I found the following URLs to be interesting:
While searching for information on how to infect and manipulate UEFI, I found the following URLs to be interesting:
- http://www.projectosx.com/forum/index.php?showtopic=3018
- http://wiki.osdev.org/UEFI
- http://uefi.org/learning_center/presentationsandvideos
- http://linuxplumbers.ubicast.tv/videos/uefi-tutorial-part-1/
- http://tianocore.sourceforge.net/wiki/Welcome
- http://vzimmer.blogspot.com/2012/12/accessing-uefi-form-operating-system.html