26
Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th , 2008

Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

Embed Size (px)

DESCRIPTION

Agenda  A brief explanation of trust boundaries and securable objects  Automatically capturing access rights granted to securable objects  Analyzing captured data to derive permitted data flows, trust boundaries, threats, and potential elevation paths

Citation preview

Page 1: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

Modeling the trust boundariescreated by securable objectsMatt Miller

USENIX W00T ‘08July 28th, 2008

Page 2: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

Problem statement Trust boundaries must be understood

Required for accurate characterization of threats Required for auditing code exposed to untrusted data Provides insight to both attackers and defenders

Techniques exist to model trust boundaries from a design perspective Threat modeling

Techniques are needed to identify and analyze trust boundaries from an implementation perspective Securable objects are the focus of this presentation

Page 3: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

Agenda

A brief explanation of trust boundaries and securable objects

Automatically capturing access rights granted to securable objects

Analyzing captured data to derive permitted data flows, trust boundaries, threats, and potential elevation paths

Page 4: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

What are trust boundaries?

Trust Boundary

Vulnerability

Exploitation

Exposes

Enables

Exposes

Domains of trust are separated by trust boundaries

Page 5: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

Securable objects

Used by Windows as an abstraction for various types of resources Files, registry keys, sections, events, processes,

threads, etc

Objects can be assigned a security descriptor to control access Security identifiers (SIDs) can be granted/denied

specific access rights

Page 6: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

Securable objects as trust boundaries

Access rights granted to SIDs define the domain of permitted data flows

User is granted access to write data Administrator is granted access to read data Thus, data can flow from User to Administrator through

the file C:\foo.dat

AdministratorUser C:\foo.datWrite file Read file

Page 7: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

Capturing securable object access rights

Two strategies are required to get a complete picture

Persistent object rights can be captured using the Windows API Defined prior to boot, non-volatile Files, registry keys, services

Dynamic object rights can be captured using dynamic instrumentation Defined after boot, volatile and non-volatile Sections, events, processes, and all other object types Provides context info & can detect subtle race conditions

Page 8: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

Dynamic instrumentation Securable objects are managed by the object manager in the

Windows kernel

A device driver can use dynamic instrumentation to capture granted access rights and execution context Process context, security tokens, call stack, and so on

Three key points must be instrumented Object definition Object use Object security descriptor update

Page 9: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

Dynamic instrumentation points Object definitions

All objects must be allocated by ObCreateObject

Object uses Programs must acquire a handle to an object to use it Object types have specific routines (e.g. NtOpenProcess) ObRegisterCallbacks enables generic instrumentation (Vista SP1+)

Object security descriptor updates The SecurityProcedure of each object type is called when an

object’s security descriptor is dynamically updated

Page 10: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

Data produced as a result

Object trace logs are generated for each object type

Roughly 900MB of raw data to analyze from a default installation of Vista SP1

Adapter (3.4K) ALPC Port (2.3M) Callback (5.2K) Controller (1.7K) Desktop (71K)

Device (163K) Directory (582K) Driver (102K) EtwRegistration (3.7M) Event (57M)

File (293M) IoCompletion (326K) Job (7.5K) Key (276M) KeyedEvent (67K)

Mutant (2.9M) PersistedFile (41M) PersistedKey (101M) PersistedService (66K) Process (3.5M)

Section (30M) Semaphore (2.4M) Session (7.5K) SymbolicLink (554K) Thread (4.7M)

Timer (217K) TmEn (18K) TmRm (39K) TmTm (29K) TmTx (14K)

Token (94M) TpWorkerFactory (104K) WindowStation (98K) WmiGuid (44K)

Page 11: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

Making sense out of the data Object trace log data can be used to generate a bipartite

data flow graph (DFG) G = (D, U, E) such that du ∈ E

Each vertex is a tuple d, u = ⟨a,m,v⟩ a is a SID or a group of SIDs (domain of trust) m is an object instance (medium) v is an object-type specific operation through which data is

transferred (verb)

Each edge du ∈ E is a data flow

Page 12: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

DFG generation: vertices Access rights translate into operations (verbs) that

can be performed on an object Write to a file (FILE_WRITE_DATA) Send a request to an ALPC port (CONNECT) Write to process memory (PROCESS_VM_WRITE)

A vertex is created for each SID that is granted rights required to use a verb on a given object SIDs that define an object are assumed to have full rights

Page 13: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

DFG generation: edges

Edges are created between vertices to illustrate permitted data flows

Both vertices must use related verbs One vertex defining data, one vertex using data

Both vertices must operate on the same object instance (medium)

Page 14: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

Example object verb relationships

Object TypeDefinition Use

Name Rights Required Name Rights required

ALPC PortWrite request CONNECT Read request Implicit def

Write reply Implicit def Read reply CONNECT

FileWrite data WRITE_DATA Read data READ_DATA

Write data WRITE_DATA Execute EXECUTE

Key Set value SET_VALUE Query value QUERY_VALUE

Service Change config CHANGE_CONFIG Start service Implicit use

Process Write memory VM_WRITE Execute code Implicit use

Page 15: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

Example data flow graph

Definition

• User is granted WRITE_DATA to c:\foo.exe

• User opens \LpcPort with CONNECT rights

• PID 123 grants User VM_WRITE rights

Use

• Administrator opens C:\foo.exe with EXECUTE rights

• Network Service defines \LpcPort

• Network Service created PID 123

⟨User,C:\foo.exe,Write data⟩ ⟨Administrator,C:\foo.exe,Execute⟩

⟨Network Service,\LpcPort,Read request⟩⟨User,\LpcPort,Write request⟩

⟨User,PID 123,Write memory⟩ ⟨Network Service,PID 123,Execute code⟩

Page 16: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

DFG analysis: trust boundaries

Trust boundary definition A medium that allows data to flow between

domains of trust

Identifying trust boundaries in a DFG The set of mediums used in data flows where

definition and use actors are not equal These data flows compose a trust boundary data

flow graph (TBDFG)

Page 17: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

Summary of a TBDFG for ALPC ports

Each edge provides a count of the number of data flows involving d and u

Each vertex is a SID string (SY=System, WD=Everyone, etc)

Page 18: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

DFG analysis: threats

Data flows can threaten domains of trust Denial of service Elevation of privilege due to a buffer overflow

Defense horizon (attack surface) Data flows that are a threat to a domain of trust

Attack horizon Data flows that are a threat from a domain of trust

Page 19: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

ALPC Port defense horizon for SYSTEM

SID Verb ALPC Port

Everyone Write request \Sessions\1\Windows\ApiPort

Everyone Write request \RPC Control\plugplay

Everyone Write request \AELPort

Everyone Write request \UxSmsApiPort

Authenticated Users Write request \WindowsErrorReportingServicePort

Everyone Write request \LsaAuthenticationPort

Authenticated Users Write request \BaseNamedObjects\msctf.serverWinlogon1

Page 20: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

DFG analysis: actualized flows Data flows permitted by a security descriptor are potential

Broadly defines the domain of what a SID can do An administrator is granted EXECUTE rights to a file but may

never actually execute it

Data flows permitted by dynamically granted access rights are actualized A subset of a SID’s potential data flows Captures a SID’s intent to participate in certain data flows An administrator opens a file with EXECUTE rights suggesting

intent to execute it

Page 21: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

DFG analysis: risk metrics Threatening data flows can be analyzed

to assign risk attributes to code Call stacks captured during dynamic

instrumentation

Code responsible for exposing a trust boundary may increase the risk to a program & domain of trust

May benefit program analysis and manual audits by helping to define an analysis scope

ntoskrnl!AlpcpCreateConnectionPort+0xd0ntoskrnl!NtAlpcCreatePort+0x29ntoskrnl!KiSystemServiceCopyEnd+0x13ntdll!ZwAlpcCreatePort+0xa…rpcrt4!RpcServerUseProtseqEpW+0x35umpnpmgr!ServiceMain+0x189svchost!ServiceStarter+0x1eaadvapi32!ScSvcctrlThreadA+0x25kernel32!BaseThreadInitThunk+0xdntdll!LdrpInitializeThread+0x9

Call stack that defined \RPC Control\plugplay

Page 22: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

Offensive applications

Identify potential privilege elevation paths Quickly identify code that should be audited Includes privilege inversions (administrator using a

user-defined object)

Identify weak ACLs & race conditions NULL DACLs Insecure use of WRITE_DAC

Page 23: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

Defensive applications

Same as offensive applications

Harden object ACLs Minimize defense horizon for TCB Defense in depth

Support the verification of threat model conformance Reflexion models & other specifications

Page 24: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

Limitations & future work

Limitations Dynamic instrumentation limits visibility Driver currently only compatible with Vista/Srv08 x64 Model only describes how data can flow, not does flow

Future work Pursue a larger case study to evaluate the effectiveness

of this model Investigate automated techniques for other trust

boundaries (networking, system calls, etc)

Page 25: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

Conclusion Trust boundaries must be identified to understand a

program’s risks Trust boundaries expose vulnerabilities

Access rights granted to securable objects allow data to flow between domains of trust

Dynamic instrumentation & a data flow model can help to understand the trust boundaries, threats, and potential elevation paths

Page 26: Modeling the trust boundaries created by securable objects Matt Miller USENIX W00T ‘08 July 28 th, 2008

Thanks for attending

Questions?