douglas mckee mark bereza - def con con 27/def con 27... · 2019-09-30 · what do we have?...

98
Douglas McKee Mark Bereza

Upload: others

Post on 25-Apr-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Douglas McKeeMark Bereza

Page 2: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

••••

••••

Page 3: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

••

Page 4: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 5: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 6: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 7: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 8: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 9: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 10: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 11: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 12: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 13: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 14: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 15: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 16: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 17: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 18: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 19: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 20: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 21: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 22: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 23: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

DEBUG THIS,

NERD

Page 24: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Watchdog error message

Page 25: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 26: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 27: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Binary Patch

Page 28: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 29: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 30: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 31: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 32: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 33: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 34: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 35: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 36: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 37: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 38: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 39: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 40: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 41: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 42: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 43: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

What do we have?

• Execution control via GOT override

• Netcat installed by def

• Memory on heap

What do we want?

• Persistence• Root access

How do we get it (easily)?

• Put shellcode in memory we control

• Fire off reverse shell by calling system()

Page 44: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

What do we have?

• Execution control via GOT overwrite

• Netcat installed by default

• Memory on heap

What do we want?

• Persistence• Root access

How do we get it (easily)?

• Put shellcode in memory we control

• Fire off reverse shell by calling system()

Page 45: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

What do we have?

• Execution control via GOT overwrite

• Netcat installed by default

• Memory on heap

What do we want?

• Persistence• Root access

How do we get it (easily)?

• Put shellcode in memory we control

• Fire off reverse shell by calling system()

Page 46: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

What do we have?

• Execution control via GOT overwrite

• Netcat installed by default

• Memory on heap

What do we want?

• Root access• Persistence

How do we get it (easily)?

• Put shellcode in memory we control

• Fire off reverse shell by calling system()

Page 47: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

What do we have?

• Execution control via GOT overwrite

• Netcat installed by default

• Memory on heap

What do we want?

• Root access• Persistence

How do we get it (easily)?

• Put shellcode in memory we control

• Fire off reverse shell by calling system()

Page 48: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

What do we have?

• Execution control via GOT overwrite

• Netcat installed by default

• Memory on heap

What do we want?

• Root access• Persistence

How do we get it (easily)?

• Put shellcode in memory we control

• Fire off reverse shell by calling system()

Page 49: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 50: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 51: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 52: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 53: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 54: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 55: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 56: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 57: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 58: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

R4 + offset gets us close to system() address

Page 59: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 60: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 61: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 62: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 63: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 64: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 65: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Hit when relay turns on

Call to ioctl() flips relay

Page 66: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 67: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 68: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 69: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 70: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Inserted into startup script using our exploit

Page 71: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

1. Delta programming executes

Page 72: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

2. Dynamic linker loads objects in the following order:

1. Delta programming executes

Page 73: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

2. Dynamic linker loads objects in the following order:

3. I/O polling thread calls canioWriteOutput to flip a relay

1. Delta programming executes

Page 74: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

1. Delta programming executes

Page 75: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

2. Dynamic linker loads objects in the following order:

1. Delta programming executes

Page 76: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

2. Dynamic linker loads objects in the following order:

3. I/O polling thread calls canioWriteOutput to flip a relay

1. Delta programming executes

Page 77: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

2. Dynamic linker loads objects in the following order:

3. I/O polling thread calls canioWriteOutput to flip a relay

1. Delta programming executes

Page 78: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 79: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 80: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 81: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Device ID: 0x0836004B

Device state: 75.1038

Device description: “Room Temp”

Page 82: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 83: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 84: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 85: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 86: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 87: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 88: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 89: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 90: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 91: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 92: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 93: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 94: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 95: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap
Page 96: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

••

••

Page 97: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap

Page 98: Douglas McKee Mark Bereza - DEF CON CON 27/DEF CON 27... · 2019-09-30 · What do we have? •Execution control via GOT overwrite •Netcat installed by default •Memory on heap