vadim bardakov - avr & msp exploitation

34
AVR & MSP exploitation Vadim Bardakov Security Researcher Digital Security (ERPScan)

Upload: defconrussia

Post on 01-Nov-2014

25 views

Category:

Technology


8 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Vadim Bardakov - AVR & MSP exploitation

AVR & MSP exploitation

Vadim BardakovSecurity ResearcherDigital Security (ERPScan)

Page 2: Vadim Bardakov - AVR & MSP exploitation

2

Why now?

AVR & MSP exploitation

© 2002—2013, Digital Security

• Inc. usage of uC• Nobody cares about code security for these devices

Page 3: Vadim Bardakov - AVR & MSP exploitation

3

Why now?

AVR & MSP exploitation

© 2002—2013, Digital Security

• Inc. usage of uC• Nobody cares about code security for these devices

• Inc. amount of easily accessible data channels • Microcontroller firmware can be retrieved

Page 4: Vadim Bardakov - AVR & MSP exploitation

4

Jokes

AVR & MSP exploitation

© 2002—2013, Digital Security

Page 5: Vadim Bardakov - AVR & MSP exploitation

5

What if it works?

© 2002—2013, Digital Security

AVR & MSP exploitation

Page 6: Vadim Bardakov - AVR & MSP exploitation

6

Oops…

© 2002—2013, Digital Security

AVR & MSP exploitation

Page 7: Vadim Bardakov - AVR & MSP exploitation

7

Firmware extraction

AVR & MSP exploitation

© 2002—2013, Digital Security

Side channel attacks• Power analysis

Page 8: Vadim Bardakov - AVR & MSP exploitation

8

Firmware extraction

AVR & MSP exploitation

© 2002—2013, Digital Security

Side channel attacks• Power analysis• Planarization• etc.

Page 9: Vadim Bardakov - AVR & MSP exploitation

9

Firmware extraction

AVR & MSP exploitation

© 2002—2013, Digital Security

MSP430:• FRAM• 5xx• 6xx

Page 10: Vadim Bardakov - AVR & MSP exploitation

10

RAM

AVR & MSP exploitation

© 2002—2013, Digital Security

MSP AVR

Page 11: Vadim Bardakov - AVR & MSP exploitation

11

RAM

AVR & MSP exploitation

© 2002—2013, Digital Security

General purpose registers

I/OSpecial Function

Registers

Additional I/O registers

Internal RAM

Page 12: Vadim Bardakov - AVR & MSP exploitation

12

Stack errors

AVR & MSP exploitation

© 2002—2013, Digital Security

General purpose registers

I/OSpecial Function

Registers

Additional I/O registers

Internal RAM

Page 13: Vadim Bardakov - AVR & MSP exploitation

13

Stack errors

AVR & MSP exploitation

© 2002—2013, Digital Security

General purpose registers

I/OSpecial Function

Registers

Additional I/O registers

Internal RAM

SP

ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

Page 14: Vadim Bardakov - AVR & MSP exploitation

14

Stack errors

AVR & MSP exploitation

© 2002—2013, Digital Security

General purpose registers

I/OSpecial Function

Registers

Additional I/O registers

Internal RAM

SP ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

Interrupt handler:UARTTimersComparatorsINT0..X

Page 15: Vadim Bardakov - AVR & MSP exploitation

15

Stack errors

AVR & MSP exploitation

© 2002—2013, Digital Security

General purpose registers

I/OSpecial Function

Registers

Additional I/O registers

Internal RAM

ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

SP

Interrupt handler:UARTTimersComparatorsINT0..X

Page 16: Vadim Bardakov - AVR & MSP exploitation

16

Stack errors

AVR & MSP exploitation

© 2002—2013, Digital Security

General purpose registers

I/O Special Function

Registers

Additional I/O registers

Internal RAM

SP ffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Reconfiguring peripheral devices….Lost control

Page 17: Vadim Bardakov - AVR & MSP exploitation

17

Stack errors

AVR & MSP exploitation

© 2002—2013, Digital Security

General purpose registers

I/O Special Function

Registers

Additional I/O registers

Internal RAM

SP ffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Reconfiguring peripheral devices….Lost control

Page 18: Vadim Bardakov - AVR & MSP exploitation

18

Stack errors

AVR & MSP exploitation

© 2002—2013, Digital Security

General purpose registers

I/O Special Function

Registers

Additional I/O registers

Internal RAM

SP ffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Reconfiguring peripheral devices….Lost control

Page 19: Vadim Bardakov - AVR & MSP exploitation

19

Stack errors

AVR & MSP exploitation

© 2002—2013, Digital Security

General purpose registers

I/O Special Function

Registers

Additional I/O registers

Internal RAM

SP ffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Reconfiguring peripheral devices….Lost control

Page 20: Vadim Bardakov - AVR & MSP exploitation

20

Stack errors

AVR & MSP exploitation

© 2002—2013, Digital Security

General purpose registers

I/O Special Function

Registers

Additional I/O registers

Internal RAM

SP ffff2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020

Reconfiguring peripheral devices….Seems OK

Page 21: Vadim Bardakov - AVR & MSP exploitation

21

Stack errors

AVR & MSP exploitation

© 2002—2013, Digital Security

General purpose registers

I/O Special Function

Registers

Additional I/O registers

Internal RAM

Global VariablesUnknown offset

Page 22: Vadim Bardakov - AVR & MSP exploitation

22

Stack errors

AVR & MSP exploitation

© 2002—2013, Digital Security

General purpose registers

I/O Special Function

Registers

Additional I/O registers

Internal RAMBypassing checks

Page 23: Vadim Bardakov - AVR & MSP exploitation

23

Buffer overflow

AVR & MSP exploitation

© 2002—2013, Digital Security

Access:• Local variables• Return address:

• Compiler-generated instructions• Interruption • Bootloader

Page 24: Vadim Bardakov - AVR & MSP exploitation

24

Buffer overflow

AVR & MSP exploitation

© 2002—2013, Digital Security

ISR(UART0_RECEIVE_INTERRUPT){ UART_RxHead++; UART_RxBuf[UART_RxHead] =

UART0_DATA;}

Casual for UART handlers

Page 25: Vadim Bardakov - AVR & MSP exploitation

25

Buffer overflow

AVR & MSP exploitation

© 2002—2013, Digital Security

ISR(UART0_RECEIVE_INTERRUPT){ UART_RxHead++; UART_RxBuf[UART_RxHead] =

UART0_DATA;}

000001FB CLI 000001FC RJMP PC-0x0000

print “\xff”xB . “\x01\0xFC”xN

Atmel Studio 6.1

Page 26: Vadim Bardakov - AVR & MSP exploitation

26

Buffer overflow

AVR & MSP exploitation

© 2002—2013, Digital Security

ISR(UART0_RECEIVE_INTERRUPT){ UART_RxHead++; UART_RxBuf[UART_RxHead] =

UART0_DATA;}

print “\xff”xN

000001FB CLI 000001FC RJMP PC-0x0000

Page 27: Vadim Bardakov - AVR & MSP exploitation

27

Buffer overflow

AVR & MSP exploitation

© 2002—2013, Digital Security

ISR(UART0_RECEIVE_INTERRUPT){ UART_RxHead++; UART_RxBuf[UART_RxHead] =

UART0_DATA;}

print “\xff”xN

000001FB CLI 000001FC RJMP PC-0x0000

DoS

Page 28: Vadim Bardakov - AVR & MSP exploitation

28

Buffer overflow

AVR & MSP exploitation

© 2002—2013, Digital Security

ISR(UART0_RECEIVE_INTERRUPT){ UART_RxHead++; UART_RxBuf[UART_RxHead] =

UART0_DATA;}

void uart_puts(const char *s ){ while (*s) uart_putc(*s++);

} Dumping RAM

uart_puts(p);000001C8 LDD R24,Y+1 Load indirect with displacement000001CA LDD R25, Y+2 Load immediate 000001CB CALL 0x0000014E Call subroutine

print “\xff”xB . “\x01\0xFC”xN. P

Page 29: Vadim Bardakov - AVR & MSP exploitation

29

Reprogramming

AVR & MSP exploitation

© 2002—2013, Digital Security

Page 30: Vadim Bardakov - AVR & MSP exploitation

30

Reprogramming

AVR & MSP exploitation

© 2002—2013, Digital Security

Open-source bootloaders sucks in production.

Page 31: Vadim Bardakov - AVR & MSP exploitation

31

Reprogramming

AVR & MSP exploitation

© 2002—2013, Digital Security

print “\xff”xB . “\x00\0x16”xN. ROPTail Load code to RAM

Interruption handler

Ideal for ROP

Page 32: Vadim Bardakov - AVR & MSP exploitation

32

Reprogramming

AVR & MSP exploitation

© 2002—2013, Digital Security

Writing code to FLASH

+00000343: 95E8 SPM Store program memory….+00000351: 95E8 SPM Store program memory

print Code . “\x00\0xFC”xN. P Gain control to SPM

Atmex

Page 33: Vadim Bardakov - AVR & MSP exploitation

33

Sum

© 2002—2013, Digital Security

• Simple attacks can be conducted blindly• Different consequences:

• DoS• Modifying device configuration• etc.

AVR & MSP exploitation

Page 34: Vadim Bardakov - AVR & MSP exploitation

www.dsec.ruwww.erpscan.com [email protected]

© 2002—2013, Digital Security

Digital Security in Moscow: +7 (495) 223-07-86Digital Security in Saint Petersburg: +7 (812) 703-15-47

34