wannacry - an os course perspective

12
WannaCry An OS course perspective

Upload: peter-troeger

Post on 28-Jan-2018

103 views

Category:

Internet


1 download

TRANSCRIPT

Page 1: WannaCry - An OS course perspective

WannaCryAn OS course perspective

Page 2: WannaCry - An OS course perspective
Page 3: WannaCry - An OS course perspective
Page 4: WannaCry - An OS course perspective
Page 5: WannaCry - An OS course perspective

MS17-10

Page 6: WannaCry - An OS course perspective

Pool corruption• Pools are memory regions for kernel mode code

• Used by drivers and kernel software

• Standard heap management

• Minimal protection, performance optimization

• Pool corruption: Writing over the end of your allocated region

Page 8: WannaCry - An OS course perspective

Attacking the pool (I)• Windows file sharing listens on port 445 for

imcoming SMB connections

• Network stack is kernel mode code (srvnet.sys)

• Incoming network data is stored in kernel mode buffer from the non-paged pool

• Problem: Heap allocation ‚fills the holes‘

Page 9: WannaCry - An OS course perspective

Attacking the pool (II)• Approach: Allocate large chunks in pool

• Leads to ‚de-randomization‘

• Large chunks become aligned one after the other

• Exploit triggers this by opening multiple SMB connections and sending large packages (grooming)

Page 10: WannaCry - An OS course perspective

Overflow• Send large initial SMB1 package

• Kernel needs to store received data

• srvnet.sys allocates space in non-paged pool

• Grooming

• First connection is closed, leaving adjacent hole

• Sending of overflow data, hole is used

Page 11: WannaCry - An OS course perspective

Overflow• Overflow overwrites SMB data structure stored in

subsequent memory

• struct SRVNET_POOLHDR

• Contains a pointer being called when finalizing a SMB request

• If accidental overwriting is done right, then the callback target is the data we sent before

• Close connection, kernel stack calls our function

Page 12: WannaCry - An OS course perspective

Game over.