56
Industrial switches firmware modification Alexander Ermolov [email protected]

Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Alexander [email protected]

Page 2: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Who am I

Security researcher at

Main interests:• Low-level design of computer systems• Undocumented features

2

Page 3: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Industrial switches

Used in industrial Ethernet

Provide communication between:• PLC• HMI• field devices• …

3

Page 4: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Why industrial switches?

Pwned switch as a part of industrial network is capable of:• pwning other devices (switches, field

devices…)• gathering information about

technical process• interfering with technical process

4

Page 5: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Timeline

“Switches get stitches” workshopEireann Leverett & Matt Erasmus

September 2014, 44CON

“Switches get stitches”Eireann Leverett

December 2014, 31c3

“Switches get stitches: episode 3”Eireann Leverett & Colin Cassidy & Robert Lee

August 2015, BlackHat

5

Page 6: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Devices coveredHirschmann RS20

Managed industrial switch

External interfaces:• USB• V.24 (RJ11) = RS-232• 4 x Ethernet (RJ45)

6

Page 7: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Devices coveredPhoenix Contact FL SWITCH MM HS

Managed industrial switch

External interfaces:• V.24 (mini DIN) = RS-232• 6 x Ethernet (RJ45)

7

Page 8: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Connecting to the switch

8

networkIndustrial switch

Host (physical access) Host (remote access)

RS-232 Ethernet

Ethernet

• Console interface • HTTP web interface• SNMP

Page 9: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Console interface

9

Page 10: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

HTTP web interface

10

Page 11: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Simple Network Management Protocol (SNMP)

OSI Application layerUDP ports: 161, 162

PDU types (commands):• GetRequest• SetRequest• GetNextRequest• GetBulkRequest• Response• Trap• InformRequest

11

IP header

UDP header

version

community

PDU type

error-status

errror-index

variable bindings

SNMPpacket

Page 12: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Simple Network Management Protocol (SNMP)

• SNMP v1 used on the switches by default• SNMP v1 uses default login/password which are not

recommended (by vendor) to be changed• SNMP v1 and SNMP v2c don’t use any encryption

12

Page 13: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Hirschmann RS20

13

Page 14: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Onboard hardware

1. CPUDigi NET+ARM NS9360B-0-I155ARM9 32-bit, no internal memory

2. SDRAMMicron MT48LC8M16A216 MB

3. Flash memoryIntel 28F640JD3D758 MB

4. Ethernet switchMarvell 88E6095F-LG01CPLD

14

32

4

1

Page 15: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Download firmware image

Firmware version is 8.0.07Download from Hirschmann ftp

The zip archive contains firmware image (~4 Mbytes)

15

Page 16: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Firmware image structure

Module 1. Main application

Module 2. Pack200 archive -> JAR-file -> web interface applet

16

application firmware

fw.bin

module1

module2

header

compressed body

(zlib/gzip)

Page 17: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Firmware image structureModule header

• 0x00 signature• 0x04 file type• 0x10 image size• 0x14 image crc32

…• 0x54 eof offset• 0x58 file crc32• 0xFC header crc32

No identity verification

17

Page 18: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Firmware image packing/unpacking

18

application firmware

fw.bin (~4 MBytes)Hirschmann_fw.py

mod1.bin(~7 Mbytes)

mod2.bin(~3 Mbytes)

mod1.bin(~7 Mbytes)

mod2.bin(~3 Mbytes)

application firmware

fw.bin (~ 4 Mbytes)

1 2

3

4

5

Page 19: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Aren’t firmware modules too big?

Unpacked modules are ~ 10 MbytesBut the flash memory size is 8 Mbytes

So, there must be some kind of a bootloader...

19

Page 20: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Firmware analysis

Booting process…

20

bootcode

CPU memory space

application firmwareRTOS VxWorks

1000h

FFFFFFFFh

SDRAM

1000000h

Page 21: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Firmware analysisOperating system

RTOS VxWorks 5.4.2old version (latest version 7)

• Found sources for 5.5• Helps identifying libc-routines and some OS-

specific routines• Usually, VxWorks images have symbols table in

the end of the image (definitely not in this case)

21

Page 22: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Firmware analysisOperating system

DEP noStack cookies noSafeSEH noASLR no

No security technologies to protect against binary vulnerabilities exploitation

22

Page 23: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Firmware analysisOperating system

Known vulnerabilities:CVE-2015-3963 spoof TCP sessionsCVE-2010-2968 brute-forceCVE-2010-2967 obtain accessCVE-2010-2966 obtain accessCVE-2010-2965 RCECVE-2008-2476 DoS…

23

Page 24: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Firmware analysis

Interesting functionality:• SNMP traffic handlers• Console commands interpreter• Flash read/write• Marvell CPLD flash read/write• …

24

Page 25: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Modifying firmware

Main requirement for testing:the injection mustn’t brick the device

Means that the injected code must be executed on-call

Decided to pick up one of command handler:“logout” was a good place to start…

25

Page 26: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Modifying firmware

26

Page 27: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

DEMO 01

27

Page 28: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Firmware modification scenario

• No authentication required

• Firmware image can be transferred to the switch via XMODEM protocol or USB interface

28

Industrial switch

Host (physical access)

RS-232

Page 29: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Firmware modification scenario

• Authentication is required• try default login/password• try to brute-force• try to exploit vulnerability

29

networkIndustrial switch

Host (remote access)

Ethernet

Ethernet

Page 30: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Firmware modification conclusion

We have a capability to modify the switch firmware:• Execute code on the switch• Execute code on the PC client (JVM)

The original firmware can be easily restored by standard firmware update operation

30

Page 31: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

How can the modified firmware survive the update process?

So we though of the bootcode!

31

Page 32: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Bootcode extraction

1. Load first 1000h of SRAMno sign of bootcode

2. Use NVRAM read/write routineshave full dump of the flash memory

32

Page 33: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Bootcode structure

33

Hirschmann RS20 system board

ARMCPU

SDRAM

Flash memory

bootblock

application firmware

fw.bin

storage

bootcodesmall part

bootcodeLarge part(Huffman

compressed)

bootcode heeader

Page 34: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Bootcode analysis

Small part:• Configure memory• Load up and execute the large part

Large part:• Initialize CPU hardware• Configure interrupt model• Load and execute an application firmware

34

bootcodesmall part

CPU memory space

application firmwareRTOS VxWorks

1000h

FFFFFFFFh

1000000h

bootcodelarge part

Page 35: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Bootcode modification

Load up the firmware with functionality to rewrite the bootcode with the custom one

35

Flash memory

bootcode

bootcodesmall part

CPU memory space

application firmwareRTOS VxWorks

bootcodelarge part

application firmwarecustom fw.bin

storage1

2

Page 36: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Bootcode modification

Once modified, the bootcode will restore the injection in the firmware during runtime

36

Flash memory

bootcode

bootcodesmall part

CPU memory space

application firmwareRTOS VxWorks

bootcodelarge part

application firmwarefw.bin

storage

3 4

Page 37: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Can the bootcode be legally updated?

1. Found undocumented functionality to update the bootcode from console (but it’s unused)

2. Found the capability to update the bootcode by network, but it seems to be not that simple…

37

Page 38: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Where to get the bootcode image?

RS20 device update archive

RSB device update archive

38

Page 39: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Where to get the bootcode image?

39

Page 40: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Where to get the bootcode image?

40

Page 41: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Bootcode modification conclusion

We have capability to:• hide in the bootcode• restore any injections into firmware during boot

Theoretically, it can be restored the original image

41

Page 42: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

How to survive the bootcode update process?

Let’s try to dig in a bit deeper…

42

Page 43: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

CPLD flash modification capability

CPLD (Complex Programmable Logic Device) is type of a PLD (Programmable Logic Device)

Logic is defined via hardware description language (VHDL, Verilog, …)

Has a flash configuration memory

43

Page 44: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Phoenix ContactFL SWITCH MM HS

44

Page 45: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Onboard hardware

1. CPUPMC RM5231AMIPS IV 32-bit, no internal memory

2. SDRAMMicron MT48LC8M16A216 MB 2x = 32MB

3. Flash memoryIntel ????NAND

4. ChipsetGalileo GT-64115

45

4

3

1

2

Page 46: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Firmware image structure

Downloaded fromPhoenix Contact official

Main firmware – ELF executable

46

application firmware

fw.bin

header

compressed body(zlib)

Page 47: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Firmware image structure

• 0x00 signature…

• 0x84 header adler32• 0x88 decompressed adler32• 0x8C decompressed size• 0x90 compressed adler32• 0x94 compressed size

No identity verification

47

Page 48: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Firmware analysisOperating system

RTOS VxWorks 6.1old version (latest version 7)

• No protection from binary vulnerabilities exploitation

48

Page 49: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Firmware analysisOperating system

Known vulnerabilities:CVE-2015-3963 spoof TCP sessionsCVE-2013-0714 DoS/RCECVE-2013-0714 DoSCVE-2010-2968 brute-forceCVE-2010-2967 obtain accessCVE-2010-2966 obtain accessCVE-2010-2965 RCECVE-2008-2476 DoS…

49

Page 50: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Firmware and bootcode modification

Firmware can be modified via:• RS-232 (XMODEM) console, no auth• HTTP Web interface, auth required

Bootcode is present on the flash and can also be rewritten

50

Page 51: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Firmware analysis

• Engineer password

• No bootcode update mechanism

• Web interface can be reached without any auth (though, to make changes you will need a password)

51

Page 52: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

DEMO 02

52

Page 53: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Conclusion

• Authorization requirements are not enough: firmware can be illegally updated

• No identity protection of firmware image: firmware (bootcode, CPLD…) can be modified

• No security technologies to protect against binary vulnerability exploitation

53

Page 54: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Mitigation

Users:• Do not use default security configurations• Update firmware to the latest versions

Developers:• Must pay more attention to the security model

of their products

54

Page 55: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Any questions?

55

Page 56: Industrial switches firmware modification2015.zeronights.org/assets/files/13-Ermolov.pdf · 2016-08-16 · December 2014, 31c3 “Switches get stitches: episode 3” Eireann Leverett

Industrial switches firmware modification

Thank You

56