Matrosov (2012, RECon) Bootkit threats

56
Bootkit Threats: In Depth Reverse Engineering & Defense Eugene Rodionov Aleksandr Matrosov

Transcript of Matrosov (2012, RECon) Bootkit threats

Page 1: Matrosov (2012, RECon) Bootkit threats

Bootkit Threats:

In Depth Reverse Engineering & Defense

Eugene Rodionov

Aleksandr Matrosov

Page 2: Matrosov (2012, RECon) Bootkit threats

Outline of The Presentation

Bootkit technology

Why? How?

Bootkit design principles

Architecture

Analysis instrumentation

Rovnix bootkit in-depth analysis

Infected VBR analysis

Infection strategy

Bootkit remediation techniques

Page 3: Matrosov (2012, RECon) Bootkit threats

Bootkit technology

Page 4: Matrosov (2012, RECon) Bootkit threats

Bootkit evolution over time

o Bootkit PoC evolution:

eEye Bootroot (2005)

Vbootkit (2007)

Vbootkit v2 (2009)

Stoned Bootkit (2009)

Evilcore x64 (2011)

o Bootkit Threats evolution:

Win32/Mebroot (2007)

Win32/Mebratix (2008)

Win32/Mebroot v2 (2009)

Win64/Olmarik (2010/11)

Win64/Olmasco (2011)

Win64/Rovnix (2011/2012)

Page 5: Matrosov (2012, RECon) Bootkit threats

Why?

Why there is a return to bootkit technology nowadays

Microsoft kernel-mode code signing policy

• loading unsigned kernel-mode driver

High level of stealth

• there are no malicious files in the file system

High degree of survival

• difficult to detect and remove

Ability to disable security software • the malware is launched before security software

Page 6: Matrosov (2012, RECon) Bootkit threats

How?

Bootkits in the wild: Infecting:

MBR (Master Boot Record)

VBR (Volume Boot Record)

Proof of Concept Bootkits: Infecting UEFI

Page 7: Matrosov (2012, RECon) Bootkit threats

Bootkit design principles

Page 8: Matrosov (2012, RECon) Bootkit threats

Boot process

Description of OS boot process:

real mode protected mode

with paging

protected mode without paging

BIOS initialization

BIOS interface

MBR VBR bootmgr

bootmgr interface

winload.exeKernel

initialization

Page 9: Matrosov (2012, RECon) Bootkit threats

Bootkit Architecture

• Performing malicious activities

•Hooking system routines, maintaining hidden storage and injecting payload

• Locating & loading driver

• Locating & loading loader code

Starter Loader

Payload Driver

Page 10: Matrosov (2012, RECon) Bootkit threats

Injecting Payload

Injection approach

APC routines

Patching entry point of the

executable

Bootkit hidden storage

Kernel-mode driver

Process1 Process2 Process3 ProcessN

Payload1 Payload2 Payload3 PayloadN

Payload1 Payload2 Payload3 PayloadN

kernel-mode

user-mode

Page 11: Matrosov (2012, RECon) Bootkit threats

Hidden Storage Architecture

Malicious kernel-mode driver

Malware payload

File system interface

Physical storage interface

Hard drive

OS File system driver

OS storage device driver stack

Hidden FS area

Applications

kernel-mode address space

user-mode address space

Page 12: Matrosov (2012, RECon) Bootkit threats

Bootkit Analysis Instrumentation

Page 13: Matrosov (2012, RECon) Bootkit threats

Debugging bootkit with Bochs

./configure --enable-debugger

Page 14: Matrosov (2012, RECon) Bootkit threats

Debugging bootkit with Bochs

Bochs internal debugger interface

Bochs Core

CPU

devices

memoryOperation

System

IDA Pro debugger

Page 15: Matrosov (2012, RECon) Bootkit threats

LIVE DEMO

Page 16: Matrosov (2012, RECon) Bootkit threats

Rovnix Reverse Engineering

Page 17: Matrosov (2012, RECon) Bootkit threats
Page 18: Matrosov (2012, RECon) Bootkit threats
Page 19: Matrosov (2012, RECon) Bootkit threats
Page 20: Matrosov (2012, RECon) Bootkit threats
Page 21: Matrosov (2012, RECon) Bootkit threats

Interesting Carberp sample (October 2011)

Page 22: Matrosov (2012, RECon) Bootkit threats

Interesting Carberp sample (October 2011)

Page 23: Matrosov (2012, RECon) Bootkit threats

functionality Rovnix.A Carberp with bootkit Rovnix.B

VBR modification

polymorphic VBR

Malware driver storage

Driver encryption algorithm

custom (ROR + XOR)

custom (ROR + XOR)

custom (ROR + XOR)

Hidden file system

FAT16 modification

FAT16 modification

File system encryption algorithm

RC6 modification

RC6 modification

Rovnix Kit Hidden File Systems Comparison

Page 24: Matrosov (2012, RECon) Bootkit threats

Rovnix Architecture

Dropper

Infected VBR

Kernel-mode driver x86

Payload x86

Kernel-mode driver x64

Payload x64

Page 25: Matrosov (2012, RECon) Bootkit threats

Installation Into the System

Check administrative privileges

Check OS version

Locate free space on the hard drive to store kernel-mode driver & hidden FS image

Store the driver & hidden FS image in the located area.

Overwrite bootstrap code of the active partition with malicious one

Page 26: Matrosov (2012, RECon) Bootkit threats

Callgraph of Bootkit Installation Routine

Page 27: Matrosov (2012, RECon) Bootkit threats

VBR Code Information

VBR is responsible for loading OS boot components (bootmgr, BCD, etc.).

JMP

[3 b]

Extended BPB (EBPB)

[48 b]

Signature

[2 b]

Boot Code

[426 b]

OEM ID

[8 b]

BIOS Parameter Block (BPB)

[25 b]

NTFS Boot Sector (Volume Boot Record)

Bootstrap code (IPL)VBR

NTFS bootstrap code(15 sectors)

1 sector

Partition data

Page 28: Matrosov (2012, RECon) Bootkit threats

Rovnix Polymorphic VBR

Polymorphic decryptor

Encrypted malicious

VBR

Compressed original

VBR

Polymorphic decryptor

Basic block 1

Basic block 2

Basic block 3

Basic block N

... ...

Page 29: Matrosov (2012, RECon) Bootkit threats

Rovnix Polymorphic VBR

Polymorphic decryptor

Encrypted malicious

VBR

Compressed original

VBR

Polymorphic decryptor

Basic block 1

Basic block 2

Basic block 3

Basic block N

... ...

Page 30: Matrosov (2012, RECon) Bootkit threats

Decrypted VBR code

Decompress & Restore Original VBR

continue normal boot process

Hook BIOS int 15h handler

intercept memory map requests protect its memory location

Hook BIOS int 13h handler

intercept hard drive I/O requests patch bootmgr system module

Page 31: Matrosov (2012, RECon) Bootkit threats

Hooking BIOS int 15h Handler

Used by operating system to

query system address map.

Abused by malicious VBR to

protect its memory region from

allocation by OS

System memory

Interrupt vectorsInt 15h handler address

Malicious VBR

Int 13h handler address

Protected memory

Page 32: Matrosov (2012, RECon) Bootkit threats

Surviving Execution Mode Switching

To be able to survive processor execution mode

switching the malware: detects execution mode switching operation in bootmgr

patches bootmgr right before switching into protected mode

copies itself over the last half of IDT (which isn’t used by OS)

Page 33: Matrosov (2012, RECon) Bootkit threats

Surviving Execution Mode Switching

To be able to survive processor execution mode

switching the malware: detects execution mode switching operation in bootmgr

patches bootmgr right before switching into protected mode

copies itself over the last half of IDT (which isn’t used by OS)

Page 34: Matrosov (2012, RECon) Bootkit threats

Surviving Execution Mode Switching

To be able to survive processor execution mode

switching the malware: detects execution mode switching operation in bootmgr

patches bootmgr right before switching into protected mode

copies itself over the last half of IDT (which isn’t used by OS)

Page 35: Matrosov (2012, RECon) Bootkit threats

Surviving Execution Mode Switching

To be able to survive processor execution mode

switching the malware: detects execution mode switching operation in bootmgr

patches bootmgr right before switching into protected mode

copies itself over the last half of IDT (which isn’t used by OS)

Page 36: Matrosov (2012, RECon) Bootkit threats

Loading Kernel-mode Driver

To be able to load unsigned kernel-mode driver Rovnix:

• Waits until kernel-mode memory manager is properly initialized:

Sets up hardware breakpoint

• Allocates memory buffer in kernel-mode address space to store the

driver:

Calls BlAllocateAlignedDescriptor system routine to allocate memory

buffer

• Inserts corresponding structure in BootDriverList of KeLoaderBlock.

The driver receives control during boot start drivers initialization

Page 37: Matrosov (2012, RECon) Bootkit threats

LIVE DEMO

Page 38: Matrosov (2012, RECon) Bootkit threats

Hidden Storage Layout

• Rovnix bootkit employs modification of FAT16 for hidden partition

• Hidden partition & kernel-mode driver are written either:

before first partition on the disk – if there is more than 2000 (1 Mb)

free sectors

In the end of the hard drive otherwise

MBR VBR Bootstrap Code File System Data

VBRMalicious

CodeFile System Data

Bootstrap Code

MBR

NTFS bootstrap code(15 sectors)

Before Infecting

After InfectingCompressedData

Hidden Partition

Malicious Unsigned

Driver

Page 39: Matrosov (2012, RECon) Bootkit threats

Hidden Storage Layout

• Rovnix bootkit employs modification of FAT16 for hidden partition

• Hidden partition & kernel-mode driver are written either:

before first partition on the disk – if there is more than 2000 (1 Mb)

free sectors

In the end of the hard drive otherwise

MBR VBR Bootstrap Code File System Data

VBRMalicious

CodeFile System Data

Bootstrap Code

MBR

NTFS bootstrap code(15 sectors)

Before Infecting

After InfectingCompressedData

Hidden Partition

Malicious Unsigned

Driver

Page 40: Matrosov (2012, RECon) Bootkit threats

\Device\Harddisk0\DR0

Lowest device object

Attached to

Attached to

...

Storage miniport driver object

DriverObject

MajorFunction

IRP_MJ_INTERNAL_DEVICE_CONTROL

Self-defense Mechanisms

To be able to protect VBR & Hidden file system Rovnix bootkit hooks

IRP_MJ_INTERNAL_DEVICE_CONTROL handler:

Page 41: Matrosov (2012, RECon) Bootkit threats

\Device\Harddisk0\DR0

Lowest device object

Attached to

Attached to

...

Storage miniport driver object

DriverObject

MajorFunction

IRP_MJ_INTERNAL_DEVICE_CONTROL

Self-defense Mechanisms

To be able to protect VBR & Hidden file system Rovnix bootkit hooks

IRP_MJ_INTERNAL_DEVICE_CONTROL handler:

Page 42: Matrosov (2012, RECon) Bootkit threats

Hidden File System Reader

Page 43: Matrosov (2012, RECon) Bootkit threats

Hidden File System Reader

Page 44: Matrosov (2012, RECon) Bootkit threats

LIVE DEMO

Page 45: Matrosov (2012, RECon) Bootkit threats

Bootkit countermeasures

Page 46: Matrosov (2012, RECon) Bootkit threats

Problem Description

Untrusted platform problem:

real mode protected mode

with paging

protected mode without paging

BIOS initialization

BIOS interface

MBR VBR bootmgr

bootmgr interface

winload.exeKernel

initialization

Bootmgr OS loader OS kernel

dependencies

OS kernel

Boot-start drivers

Non boot-start kernel-mode drivers

Pre boot firmware

Point of Attack

Page 47: Matrosov (2012, RECon) Bootkit threats

Bootkits & GPT Disks

There is no MBR & VBR code which is executed in GPT disks

Bootkits in-the-wild aren’t applicable to GPT disks

Protective MBR

Primary GUID partition Table

Primary GUID partitions

Backup GUID partition Table

Primary GUID Partition Table Header

GUID Partition entry 1

GUID Partition entry 1

GUID Partition entry 1

GUID Partition entry 1

GUID Partition entry 1...

GUID Partition Table Entry

Partition type GUID

Unique partition GUID

First LBA

Last LBA

Attributes flags

Partition name

Page 48: Matrosov (2012, RECon) Bootkit threats

Bootkits & GPT Disks

UEFI Firmware

UEFI Boot Manager

Windows Boot Manager (bootmgr.efi)

Windows OS Loader (winload.efi)

OS Kernel (ntoskrnl.exe)

Page 49: Matrosov (2012, RECon) Bootkit threats

Windows 8 Security Features

Security enhancements introduced in Windows 8:

• Secure boot technology

Employing UEFI secure boot in conjunction with TPM

• Early anti-malware launch module

Allows antimalware software start before any other third-

party components

Page 50: Matrosov (2012, RECon) Bootkit threats

Secure Boot

Secure boot prevents running an unknown OS loader:

UEFI will verify OS loader

The key for verification is stored inside TPM

Trust anchorTrust anchor

Bootmgr OS loader OS kernel

dependencies

OS kernel

Boot-start drivers

Non boot-start kernel-mode drivers

UEFI

TPM

Page 51: Matrosov (2012, RECon) Bootkit threats

Early antimalware launch module

Antimalware component receives control before any

other third-party software at boot time.

Windows OS loader

Kernel initialization

Early antimalware

module

Third-party drivers

Page 52: Matrosov (2012, RECon) Bootkit threats

Conclusion Bootkit technology allows malware to load unsigned kernel-mode

driver and achieve high degree of stealth in the system

The main target of bootkit infection are MBR & VBR

Rovnix is a first known bootkit infecting VBR

The most interesting features of the latest modification of Rovnix

bootkit are:

Polymorphic infected VBR

Hidden Storage

There are additional security features introduced in Windows 8 OS:

Early antimalware launch module

Secure Boot

Page 53: Matrosov (2012, RECon) Bootkit threats

References

Rovnix Reloaded: new step of evolution http://blog.eset.com/2012/02/22/rovnix-reloaded-new-step-of-evolution

TDL4 reloaded: Purple Haze all in my brain http://blog.eset.com/2012/02/02/tdl4-reloaded-purple-haze-all-in-my-brain

Bootkit Threat Evolution in 2011 http://blog.eset.com/2012/01/03/bootkit-threat-evolution-in-2011-2

The Evolution of TDL: Conquering x64 http://go.eset.com/us/resources/white-papers/The_Evolution_of_TDL.pdf

Modern bootkit trends: bypassing kernel-mode signing policy http://www.virusbtn.com/conference/vb2011/abstracts/LastMinute1.xml

King of Spam: Festi botnet analysis http://blog.eset.com/2012/05/11/king-of-spam-festi-botnet-analysis

Page 54: Matrosov (2012, RECon) Bootkit threats

Moscow, Russia

19-20 November [email protected]

Page 55: Matrosov (2012, RECon) Bootkit threats
Page 56: Matrosov (2012, RECon) Bootkit threats

Thank you for your attention!

Aleksandr Matrosov [email protected] @matrosov

Eugene Rodionov [email protected] @vxradius