Modeling the trust boundaries created by securable objects
description
Transcript of Modeling the trust boundaries created by securable objects
![Page 1: Modeling the trust boundaries created by securable objects](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/1.jpg)
Modeling the trust boundariescreated by securable objectsMatt Miller
USENIX W00T ‘08July 28th, 2008
![Page 2: Modeling the trust boundaries created by securable objects](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/2.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/3.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/4.jpg)
What are trust boundaries?
Exposes
Enables
Exposes
Domains of trust are separated by trust boundaries
![Page 5: Modeling the trust boundaries created by securable objects](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/5.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/6.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/7.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/8.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/9.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/10.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/11.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/12.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/13.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/14.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/15.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/16.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/17.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/18.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/19.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/20.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/21.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/22.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/23.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/24.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/25.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070415/56814f8b550346895dbd461a/html5/thumbnails/26.jpg)
Thanks for attending
Questions?