• Aucun résultat trouvé

Next generation mobile rootkits

N/A
N/A
Protected

Academic year: 2022

Partager "Next generation mobile rootkits"

Copied!
76
0
0

Texte intégral

(1)

leveldown security Thomas Roth

Next generation mobile rootkits

Hack In Paris 2013

(2)

leveldown security Thomas Roth

Hi!

Thomas Roth

Embedded security (Payment terminals etc.)

Distributed computing (and breaking)

Web-stuff

Social: @stacksmashing

(3)

leveldown security Thomas Roth

Prologue

Mobile rootkits & Trustzone

(4)

leveldown security Thomas Roth

What are we protecting?

Communication Data Credentials Payment Tracking

(5)

leveldown security Thomas Roth

In the wild

CarrierIQ (Usage statistics)

FinFisher (Governmental surveillance)

Cloaker (Research)

(6)

leveldown security Thomas Roth

Where do they hide?

CPU Baseband Memory

(7)

leveldown security Thomas Roth

Where do they hide?

CPU Baseband Memory

TrustZone

(8)

leveldown security

Short ARM intro

32-bit RISC architecture

All instructions 32 bit long

Except in “Thumb-mode”, 16-bit instructions

Peripherals are mapped in memory (i.e. IOs at 0x40000000)

CP15 = System Control Coprocessor

Controls features like MMU, power saving, caches ...

(9)

leveldown security Thomas Roth

ARM TrustZone

Allows the processor to switch into a “secure mode”

Secure access to screen, keyboard and other peripherals

Tries to protect against: “...malware, trojans and rootkits”

So called TEEs (Trusted Execution Environments) run in it

Introduced with ARMv6KZ

Source for quotes: http://www.arm.com/products/processors/technologies/trustzone.php

(10)

leveldown security Thomas Roth

ARM TrustZone

Allows the processor to switch into a “secure mode”

Secure access to screen, keyboard and other peripherals

Tries to protect against: “...malware, trojans and rootkits”

So called TEEs (Trusted Execution Environments) run in it

Introduced with ARMv6KZ

Source for quotes: http://www.arm.com/products/processors/technologies/trustzone.php

(11)

leveldown security Thomas Roth

ARM TrustZone

Splits the CPU into two worlds: Secure and normal

Communication between both worlds via shared memory mappings

State of the CPU is indicated to peripherals using a bit on AXB/AHB

Allowing secure-only on- & off-chip peripherals

(12)

leveldown security Thomas Roth

Trusted Execution Environments

Small operating system running in TrustZone and providing services to the ‘real’ operating system/apps

You write apps for them and pay ??? to integrate them

Use them via a driver in your operating system

Drivers are often open-source

(13)

leveldown security Source: http://www.anandtech.com/show/4480/ti-omap4-first-to-be-awarded-netflix-hd-1080p-hd-sri-certificationThomas Roth

Example: Netflix

Netflix requires a device-certification

For SD, the device just needs to be fast enough to play video

For HD, the labels require ‘end-to-end’ DRM, so that the video-stream can’t be grabbed at any time

Video decoding running in TrustZone with direct access to screen, no way to record it from Android

(14)

leveldown security Thomas Roth

Attacker Model

Protect against:

Device owners (DRM and other copy protection methods)

Malware (Steal PayPass informations from the device)

Freedom

(15)

leveldown security Thomas Roth

How does it work?

A second register set to the first CPU core

Mode switch from normal world:

SMC instruction (Secure Monitor Call)

Hardware exception (IRQ, FIQ, etc.)

NS bits on the internal bus (AXI/AHB) for indicating state to peripherals

(16)

leveldown security Diagram inspired by: http://www.arm.com/products/processors/technologies/trustzone.php Thomas Roth

How does it work?

Normal

World Secure

World Monitor

Mode

SMC instruction or

Hardware exception

Privileged modes User mode

Privileged modes User mode

(17)

leveldown security Thomas Roth

How does it actually work?

Standard CPU modes

User, FIQ, IRQ, SVC ... SMC

Mode

Hardware interrupt/SMC call

State handling & NS-bit

(18)

leveldown security Thomas Roth

How does it actually work?

SMC: (Always has the NS bit enabled)

Detect whether coming from normal or secure world

Store registers of current world

Load registers of new world

Toggle NS bit

Give execution to new world

(19)

leveldown security Thomas Roth

Memory in TrustZone

Normal World Secure World

TrustZone enabled MMU

Normal-world memory Shared Secure-only memory

(20)

leveldown security Thomas Roth

Memory in TrustZone

Normal-world only sees its own memory as well as the shared segment

Secure-world can access everything

(21)

leveldown security Thomas Roth

Memory in TrustZone

Normal-world only sees its own memory as well as the shared segment

Secure-world can access everything

I guess you see why this is could useful...

(22)

leveldown security Thomas Roth

Boot process

Start

1. stage bootloader (ROM)

2. stage bootloader (Flash)

Hardware abstraction

Integrity verification of 2. stage bootloader

Initialization of TrustZone + TrustZone Kernel Lockdown of TrustZone

Load & configure OS

Operating System

Android Windows

...

(23)

leveldown security Thomas Roth

Boot process

Start

1. stage bootloader (ROM)

2. stage bootloader (Flash)

Hardware abstraction

Integrity verification of 2. stage bootloader

Initialization of TrustZone + TrustZone Kernel Lockdown of TrustZone

Load & configure OS

Operating System

Android Windows

...

T R U S T E D

(24)

leveldown security Thomas Roth

By the way

“Unlocking” a bootloader does not mean that you can do what you want.

Most hardware vendors still lockdown a significant part of the boot chain, locking you out of TrustZone.

(25)

leveldown security Thomas Roth

Hardware support

All modern smartphone CPUs:

Qualcomm Snapdragon

TI OMAP

...

(26)

leveldown security Thomas Roth

So basically...

The vendor installs a small operating system in a part of the CPU

This OS can do -anything- and third party apps are installed in it

(27)

leveldown security Thomas Roth

So basically...

The vendor installs a small operating system in a part of the CPU

This OS can do -anything- and third party apps are installed in it

What could possibly go wrong?

(28)

leveldown security Thomas Roth

Chapter 1

Building a rootkit in TrustZone

(29)

leveldown security

What?

Super small rootkit that runs in TrustZone (and now even in SMC!)

First TrustZone rootkit

Implemented entirely in assembler

(Compilers are for losers)

(30)

leveldown security Thomas Roth

Why?

It’s fun!

People haven’t talked about the problems that come with TrustZone

The ‘trusted’ in Trusted Computing is not only about the user trusting the hardware, but also about the vendor distrusting the user

(31)

leveldown security Thomas Roth

Why?

(32)

leveldown security Thomas Roth

Where to test?

Developing on actual hardware:

Need an OMAP HS (not GP) Dev-board

Beagleboards & co (OMAP) switch to normal world in ROM

(Hardware is locked down with strong keys)

(33)

leveldown security Thomas Roth

Where to test?

Software emulation:

QEMU supports ARM

Paper “A flexible software development and emulation framework for ARM TrustZone”

“qemu-trustzone”

Johannes Winter, Paul Wiegele, Martin Pirker, and Ronald Toegl

Open-source (GPL) TEE by sierraware (Open Virtualization)

(34)

leveldown security Thomas Roth

Where to test?

Using hardware hack for $vendor to execute code in TrustZone

(35)

leveldown security Thomas Roth

Where to test?

Let’s just hack into a TEE!

(36)

leveldown security Thomas Roth

Getting a binary-image of a TEE

Firmware updates are signed, but not encrypted.

Firmware updates are often downloaded via HTTP.

Vendors have ‘hidden’ FTP-servers.

(37)

leveldown security

Workflow

Disassemble bootloader

IDA Pro & co can’t just find code parts, need to analyze by hand &

with scripts

Analyze coprocessor instructions to find memory layout

(almost automated)

(38)

leveldown security Thomas Roth

Looking for mitigations

(39)

leveldown security Thomas Roth

Looking for mitigations

No ASLR

No DEP (NX)

Executable heap, stack, data, everything

(40)

leveldown security Thomas Roth

Exploiting like it’s 1999

Yeah Baby!

(41)

leveldown security

Let’s talk about strncpy

strncpy(char *destination, char *source, size_t destination_size);

strncpy sucks, it only NUL-terminates if:

strlen(destination) < destination_size

(Please, use strlcpy. Also, did I mention I do code reviews?)

Still often pretty hard to exploit.

Thomas Roth

(42)

leveldown security

Where to test?

Official boards seem to be hard to obtain

QEMU

On smartphone via hardware hack

On smartphone via software exploit

Thomas Roth

(43)

leveldown security Thomas Roth

Scheduling the rootkit

Switch to monitor mode in (ir)regular intervals without help of the operating system

The latency induced by the switch to the rootkit must be kept as low as possible

(44)

leveldown security Thomas Roth

Latency

Normal world interrupt/SMC Monitor code

Rootkit scheduler Monitor code

Back to normal world

(45)

leveldown security Thomas Roth

Latency

Normal world interrupt/SMC Monitor code

Rootkit scheduler Monitor code

Back to normal world

(46)

leveldown security Source: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.prd29-genc-009492c/CACCDCDH.html Thomas Roth

Scheduling the rootkit

ARM actually gives tips for running TrustZone invisible to the normal world:

Does the Secure world care about direct or indirect Normal world visibility of its execution?

If yes, then consider obfuscating interrupt timing, disabling Non-secure access to the Performance Counters, and performing selective cache maintenance on critical address ranges on world switch.

(47)

leveldown security Thomas Roth

Scheduling the rootkit

How is control transferred to the monitor mode?

IRQ? Used a lot by the OS & can be masked by normal world

External abort? Too unreliable & environment dependent

FIQ? Can be locked down (NMI)

Overwrite the interrupt vector (like Cloaker does)

TZIC - TrustZone Interrupt Controller

(48)

leveldown security Thomas Roth

IRQ ‘interception’

IRQ Triggered Monitor saves state

Rootkit executes

Monitor restores state

“Real” IRQ handler is

called

(49)

leveldown security Thomas Roth

Boot process

1.Setup secure-world 2.Setup monitor

3.Lockdown TrustZone (Switch to normal world) 4.Start operating system/bootloader

(50)

leveldown security Thomas Roth

Boot process

1.Setup secure-world

2.Setup monitor

3.Lockdown TrustZone (Switch to normal world) 4.Start operating system/bootloader

(51)

leveldown security Thomas Roth

Secure World Memory Setup

Create page table for secure world

Turn on MMU

Configure stack

Recommendation if no TEE is already available:

Use physical address space next to a hardware mapping

(52)

leveldown security Thomas Roth

Secure World Initialization

Run initialization-routine of rootkit

Configure ‘system-call’ facility of rootkit (IRQ)

Load and create contexts for modules

(53)

leveldown security Thomas Roth

Secure World

Uses a timer-based slice ‘scheduler’ by default to keep time ~constant

(Timing by TZIC - TrustZone Interrupt Controller)

Store files in secure storage if available

(54)

leveldown security Thomas Roth

Boot process

1.Setup secure-world 2.Setup monitor

3.Lockdown TrustZone (Switch to normal world) 4.Start operating system/bootloader

(55)

leveldown security Thomas Roth

Monitor

Store normal world register banks and switch on NS bit

Execute rootkit scheduler

Store secure world register banks and switch off NS bit

(56)

leveldown security Thomas Roth

Monitor

Check if coming from normal or secure world:

mrc p15, 0, r0, c1, c1, 0

tst r0

beq to_normal

bne to_secure

(57)

leveldown security Thomas Roth

Monitor

Storing the state of all register banks:

STMIA r0!, {r0 - r13}

CPS 0x19 ; SVC mode

STMIA r0!, {r1, r13, lr}

... for all processor modes

... And vice versa for restoring the register banks

(58)

leveldown security Thomas Roth

Monitor

Be aware of cache + pipeline stuff!

Use pipeline-flushing instructions

Be sure to have your cache configuration right

(59)

leveldown security Thomas Roth

Monitor setup

Configure TCM for latency reduction

Setup the interrupt interception mechanism

(Set IRQ to secure in SCR (Secure Configuration Register))

(60)

leveldown security Thomas Roth

Boot process

1.Setup secure-world 2.Setup monitor

3.Lockdown TrustZone (Switch to normal world) 4.Start operating system/bootloader

(61)

leveldown security Thomas Roth

Lockdown: SCR

Security Configuration Register (C1 C1 on CP15)

Disable modification of A & F bit in CPSR from Normal

World for External Abort, FIQ, IRQ

Actual NS bit

(62)

leveldown security Thomas Roth

Lockdown: SCR

Sample configuration:

mov r0, #0x3E

mcr p15, 0, r0, c1, c1, 0

Sets world for IRQ + FIQ to secure

I decided to let the normal world mask the interrupts

(Avoid suspicion)

(63)

leveldown security Thomas Roth

Lockdown

Depending on the hardware, some other configurations might be needed, too

i.e. External storage may requires configuration to know which part is only accessible as secure

TZPC (TrustZone Protection Controller) configuration

(64)

leveldown security Thomas Roth

Boot process

1.Setup secure-world 2.Setup monitor

3.Lockdown TrustZone (Switch to normal world) 4.Start operating system/bootloader

(65)

leveldown security Thomas Roth

Start operating system

TrustZone is configured and ready to go

Operating system + loader starts unmodified

Nothing to see here, move along!

(66)

leveldown security Thomas Roth

Real world problems

$vendor does power management setup in TrustZone

Had to integrate vendor blob into custom TZ image

(67)

leveldown security Thomas Roth

Chapter 2

It boots! And now?

(68)

leveldown security Thomas Roth

We...

Have an execution environment that is entirely separated from the normal OS

Configured the CPU and its peripherals to hide any traces from our existence

Get control of the CPU regularly

(69)

leveldown security Thomas Roth

We can...

access all user data

manipulate memory of everything

communicate (kind of)

(70)

leveldown security Thomas Roth

Yay!

(71)

leveldown security Thomas Roth

Communication

Difficult

Talk to baseband

Access to UMTS, which at least very difficult to sniff

Create IP packets by directly talking to the network hardware

See Cloaker paper

Suspicious and easily detected

(72)

leveldown security Thomas Roth

What else to do?

There’s quite some secret stuff in TrustZone implementations

(73)

leveldown security Thomas Roth

Installation in the wild

Via exploit in app

Vendor delivered (either during manufacturing or by FW update)

Baseband attack

(74)

leveldown security Thomas Roth

Interoperability

Ports to new hardware can be done in under a week:

TrustZone is almost the same on all platforms

Mostly peripherals and memory stuff differs

TEE may has to be integrated, too

Easy to do, i.e. modify OpenVirtualization TEE or binary patch

(75)

leveldown security Thomas Roth

Detection methods

Latency

Be paranoid and only use phones that don’t have TrustZone

Good luck with that one.

(76)

leveldown security Thomas Roth

Thank you!

Any questions?

Thomas Roth - [email protected] - @stacksmashing

Slides: http://leveldown.de/hip_2013.pdf

Références

Documents relatifs

⇒ Encryption algorithm is strong and mutual authentication make it difficult to intercept communications.. State Of the

This paper provides an extensive discussion of what personalisation is, how it is related to mobile services, what func- tions it is dependent on and how it can be realised

« Un système d’exploitation est un ensemble de procédures cohérentes qui a pour but de gérer la pénurie de ressources...

Older rootkits used to hook some distinctive functions to hide its files or registry entries when queried from usermode.. Almost every run-of-the-mill antirootkit tool is able

Now you should copy in the file name, disk address (from your first lookup), length, type, and start address (if needed). This done, call DWRIT to update

THIS VERSION WAS PRODUCED BY REVERTING THE SEVENTH EDITION KERNEL SOURCE CODE AND A PROGRAM WRITTEN TO GENERATE THE INDEX AND CROSS REFERENCE. BY

More specifically, we present the integration we provide with the NetFPGA-10G platform 1 and the design of the Open Source Network Tester (OSNT 2 ) platform [1].OSNT enhances

Using OFLOPS-Turbo we presented the enhanced precision capabilities pro- vided by the OSNT platform and evaluated the flow table manipulations for two production 10 GbE